【发布时间】:2016-05-28 07:43:36
【问题描述】:
我正在寻找以下问题的解决方案:我有一个网站,希望每隔一小时(大约)将邮件发送到某个地址。 所以我决定为 C# 使用 Quartz 库。我写了作业、Start() 函数和 Execute:
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<EmailJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInMinutes(50)
.RepeatForever())
.Build();
scheduler.ScheduleJob(job, trigger);
}
在 Application_start() 中:
JobScheduler.Start();
当我在本地运行网站时,它运行良好,因为应用程序一直处于“播放”模式。因此它按预期每 50 分钟发送一次邮件。
现在解决问题:将网站上传到服务器时,Job 只工作了一次 - 第一次。在我阅读之后,我对这个问题的结论是,网站应用程序有一个“睡眠”模式,所以如果有人没有进入网站,应用程序就处于睡眠状态,所以工作不工作并且电子邮件不发送。
所以我的问题是 - 如果我想要一个每 50 分钟运行一次功能的调度程序,而不取决于是否有人进入该网站,我该怎么办?
【问题讨论】:
-
使用某种站点监视器来保持您的站点始终运行
-
除此之外还有应用初始化模块iis.net/downloads/microsoft/application-initialization。但是它仅适用于 IIS 7.5 及更高版本以及框架 4.0 及更高版本。
标签: c# asp.net quartz-scheduler