【发布时间】:2013-08-07 04:51:25
【问题描述】:
我使用 Quartz lib 在我的 ASP.NET MVC 项目中按计划执行一些任务。我将我的作业初始化为 Global.asax 文件的 Application_Start 方法。但是过了一段时间,Quartz 停止了,因为 Application_End 方法被执行了。
变量被声明为静态:
public static ISchedulerFactory scheduleFactory = new StdSchedulerFactory();
public static IScheduler scheduler = scheduleFactory.GetScheduler();
Quards 的 Jobs 是这样初始化的:
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 方法,即使服务器上没有活动会话?
【问题讨论】:
标签: asp.net-mvc cron quartz.net