Quartz在IIS(ASP.NET)上托管时在后台运行多长时间?

时间:2016-06-21 06:46:06

标签: asp.net quartz.net

我有一个ASP.NET网站,我正在使用Quartz做一些后台工作。 Quartz作业设置为每5分钟触发一次。

将石英:

  1. 在最后一位用户离开后连续在后台运行 网站?
  2. 在某个时间点停止,并在新用户进入网站时继续?
  3. 如果答案是#2,是否有办法让作业一直运行?

1 个答案:

答案 0 :(得分:4)

在某些时候,在一段时间不活动之后,您的IIS托管应用程序将处于某种“休眠模式”状态。从现在开始,您的触发器不再启动作业,直到您的应用程序被尝试访问它的用户重新激活。

以下是您可以使用的解决方案:

  • 在单独的Windows服务中运行您的工作。需要一些重构工作,但显然是最安全的解决方案

  • Hangfire是另一个.Net后台作业库。这是他们通过Making ASP.NET application always running向用户提供的解决此问题的链接。请注意,您需要完全控制托管环境才能实现此目的。

  • 您可以将某项服务设置为Pingdom,以防止您的网站陷入此“睡眠模式”状态。 但是,我不建议使用此解决方案。

请注意,在您的应用进入“睡眠模式”之前所需的时间可以从一个环境变为另一个环境。如果在您的情况下它需要超过5分钟(每个作业之间的时间),此过程可能足以保持您的网站。事实上,它将作为解决方案#3(使用外部服务以频繁的速度戳你的环境)