如果网站处于非活动状态,asp.net cron作业不会始终运行
本文关键字:作业 运行 cron net 网站 于非 活动状态 asp 如果 | 更新日期: 2023-09-27 18:27:13
我有一份工作,每30分钟就要完成。Quartz.net代码:
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInMinutes(30)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))
)
.Build();
Hangfire代码:
RecurringJob.AddOrUpdate(() => DoSomething(), "*/30 * * * *");
这两种方法都适用于本地,但如果网站处于非活动状态(例如2-3小时的工作不再触发),则适用于生产服务器。但如果我去我的网站,下一份工作将触发。有什么解决办法吗?我必须在iis上更改一些内容,或者可以用代码解决问题吗?
每个应用程序池都定义了一个空闲超时。如果超时已过,并且没有向应用程序发出任何请求,IIS将停止工作进程,并卸载应用程序。
由于您将作业的频率设置为30分钟,而默认的空闲超时为20分钟,我强烈怀疑这是您的问题。
您可以在IIS管理器中配置空闲超时:
- 打开IIS管理器
- 在"连接"窗格中,展开服务器节点,然后单击"应用程序池"
- 在"应用程序池"页面上,选择要为其指定空闲超时设置的应用程序池,然后单击"操作"窗格中的"高级设置"
- 在空闲超时(分钟)框中,键入分钟数,然后单击确定