首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.Net MVC的生日提醒代码

Asp.Net MVC的生日提醒代码
EN

Stack Overflow用户
提问于 2015-07-22 08:14:03
回答 2查看 2.4K关注 0票数 4

我想在MVC Asp.Net中创建一个用于酒店客房预订和客户管理的web应用程序。我对其中一项要求有困难。我想创建一个代码,以发送短信给客户在他们的生日,希望他们从酒店。我感到困惑的是,应该把代码放在哪里,以检查生日与今天的日期相同的客户,这样即使web应用程序没有启动,代码也会在每天12:00 上触发。请你解释一下我该在哪里插入密码好吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-22 08:34:56

有一个名为夸兹的开源库,它将帮助您实现这一点。

关于这个图书馆有一个很好的博客文章。该库提供了一个流畅的API,它允许您做您想做的事情。

下面的代码(基于上面提到的博客文章的例子)创建了一个每天12点被称为事件的事件:

代码语言:javascript
复制
 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
 scheduler.Start();

 IJobDetail job = JobBuilder.Create<BirthdayJob>().Build();

 ITrigger trigger = TriggerBuilder.Create()
    .WithDailyTimeIntervalSchedule
       (s =>
        s.WithIntervalInHours(24)
        .OnEveryDay()
        .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(12, 0))
        )
 .Build();

 scheduler.ScheduleJob(job, trigger);

它可以在网站、Windows甚至WinForms应用程序的上下文中运行(只要用户不关闭它)。

根据上下文的不同,您需要在不同的地方安排任务。对于一个网站来说,Application_Start()-Method就是其中之一。对于服务,这将是OnStart()-Method。

此外,您还需要一个类"BirthdayJob“,它将提供应该定期执行的实际代码:

代码语言:javascript
复制
public class BirthdayJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        // Check for birthdays...
    }
}

如果在网站上下文中调用此代码,您应该注意以下一点:

如果您的网站有一段时间没有被请求,IIS可能会让它进入休眠状态。在这种情况下,可能没有执行计划的任务。

有一个选项可以更改网站的超时:在IIS管理器中,转到“应用程序池”,找到用于网站的应用程序池,然后选择"Properties“-> "Performance”。在那里,您可以设置空闲超时。解决这个问题还有其他几种方法。

但是,如果您的网站经常被要求,您将永远不会看到这个问题。

最好的方法是调用Windows中的Quarz,即使您的网站在桌子下醉醺醺地躺着也能运行。

票数 5
EN

Stack Overflow用户

发布于 2015-07-22 08:19:52

您可以与web应用程序一起发布服务,web应用程序进行定期检查,并与站点分开运行。

该服务的另一个用途可能是对网站使用的数据存储进行一般维护,例如,每天一次,它将存档信息、检查生日以及任何其他维护或定期任务,如发出提醒通知等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31557513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档