我使用Quartz lib按計劃在ASP.NET MVC項目上執行一些任務。我將我的作業初始化爲Global.asax文件的Application_Start方法。但是經過一段時間Quartz被停止了,因爲Application_End方法被執行了。在ASP.NET MVC上使用Quartz
變量被聲明爲靜態:
public static ISchedulerFactory scheduleFactory = new StdSchedulerFactory();
public static IScheduler scheduler = scheduleFactory.GetScheduler();
這裏是如何Quards的工作是初始化:
IJobDetail jobSender = new JobDetailImpl("jobSender", "MailGroup", typeof(JobMailSender));
ITrigger triggerSender = new CronTriggerImpl("triggerSender", "SenderGroup", "jobSender", "MailGroup", "0 0/30 * * * ?");
scheduler.ScheduleJob(jobSender, triggerSender);
scheduler.Start();
我發現爲什麼會發生的原因。如果所有用戶的會話都不存在,並且服務器沒有活動的用戶會話,則將執行方法Application_End。
我已經創建了新的Quartz作業,每15分鐘打開一次該網站,結果新用戶會話將在服務器上創建。但仍不時調用Application_End方法。
是否有人面臨類似的問題?也許web.config有一些設置不會執行方法Application_End,即使服務器上沒有活動會話?