如果网站处于非活动状态,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上更改一些内容,或者可以用代码解决问题吗?

如果网站处于非活动状态,asp.net cron作业不会始终运行

每个应用程序池都定义了一个空闲超时。如果超时已过,并且没有向应用程序发出任何请求,IIS将停止工作进程,并卸载应用程序。

由于您将作业的频率设置为30分钟,而默认的空闲超时为20分钟,我强烈怀疑这是您的问题。

您可以在IIS管理器中配置空闲超时:

  1. 打开IIS管理器
  2. 在"连接"窗格中,展开服务器节点,然后单击"应用程序池"
  3. 在"应用程序池"页面上,选择要为其指定空闲超时设置的应用程序池,然后单击"操作"窗格中的"高级设置"
  4. 在空闲超时(分钟)框中,键入分钟数,然后单击确定