好吧,我有一份工作,每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上改变一些东西,还是可以用代码解决问题?
答案 0 :(得分:1)
每个应用程序池都定义了空闲超时。如果超时过去且没有向应用程序发出请求,IIS将停止工作进程并卸载应用程序。
由于您将作业频率设置为30分钟且默认空闲超时为20分钟,因此我强烈怀疑这是您的问题。
你可以configure the idle timeout in IIS Manager:
- 打开IIS管理器。
- 在“连接”窗格中,展开服务器节点,然后单击“应用程序池”。
- 在“应用程序池”页面上,选择要为其指定空闲超时设置的应用程序池,然后单击“操作”窗格中的“高级设置”。
- 在“空闲超时(分钟)”框中,键入分钟数,然后单击“确定”。
醇>