我想在MVC Asp.Net中创建一个用于酒店客房预订和客户管理的web应用程序。我对其中一项要求有困难。我想创建一个代码,以发送短信给客户在他们的生日,希望他们从酒店。我感到困惑的是,应该把代码放在哪里,以检查生日与今天的日期相同的客户,这样即使web应用程序没有启动,代码也会在每天12:00 上触发。请你解释一下我该在哪里插入密码好吗?
发布于 2015-07-22 08:34:56
有一个名为夸兹的开源库,它将帮助您实现这一点。
关于这个图书馆有一个很好的博客文章。该库提供了一个流畅的API,它允许您做您想做的事情。
下面的代码(基于上面提到的博客文章的例子)创建了一个每天12点被称为事件的事件:
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“,它将提供应该定期执行的实际代码:
public class BirthdayJob : IJob
{
public void Execute(IJobExecutionContext context)
{
// Check for birthdays...
}
}如果在网站上下文中调用此代码,您应该注意以下一点:
如果您的网站有一段时间没有被请求,IIS可能会让它进入休眠状态。在这种情况下,可能没有执行计划的任务。
有一个选项可以更改网站的超时:在IIS管理器中,转到“应用程序池”,找到用于网站的应用程序池,然后选择"Properties“-> "Performance”。在那里,您可以设置空闲超时。解决这个问题还有其他几种方法。
但是,如果您的网站经常被要求,您将永远不会看到这个问题。
最好的方法是调用Windows中的Quarz,即使您的网站在桌子下醉醺醺地躺着也能运行。
发布于 2015-07-22 08:19:52
您可以与web应用程序一起发布服务,web应用程序进行定期检查,并与站点分开运行。
该服务的另一个用途可能是对网站使用的数据存储进行一般维护,例如,每天一次,它将存档信息、检查生日以及任何其他维护或定期任务,如发出提醒通知等。
https://stackoverflow.com/questions/31557513
复制相似问题