Quartz 调度程序在应用程序池回收后不执行作业(.Net)

Quartz scheduler not executing job after app pool recycle (.Net)

我们在 IIS 8.0 上托管了一个 Intranet 应用程序。

我们有一些可用的网络方法需要在特定时间执行。

因此,我们已经使用 Quartz 调度程序来调度执行 Web 方法的作业。在 global.asax 的 Application_Start 事件中,我们编写了启动调度程序的代码。

为了让调度器保持运行 运行 应用程序池应该始终处于 运行 模式,所以我们设置了 属性 startMode=“AlwaysRunning” 并且应用程序应该启动,所以我们设置了应用程序 属性 preloadEnabled=“True”。

我们每 1740 分钟(29 小时,默认时间)回收一次应用程序池。

这里的问题是:

如果我有一份工作安排在早上 3:00 AM。我的应用程序池处于 运行 状态。

我在预定时间的前一天 6:00 下午浏览了应用程序。

根据回收时间,我的应用程序池已在 2:00 AM 回收,直到 3:00 AM 我的应用程序未被 ping,但我的应用程序池处于 运行 状态。

当应用程序池被回收时,应用程序池将再次启动(因为 属性 startMode=“AlwaysRunning”)但是如果那个工作进程的进程 ID 会不同。

由于应用程序池回收,quartz 没有按计划执行作业。如果我在应用程序池回收后浏览应用程序,那么石英将按照计划执行作业。

谁能尽快帮我解决这个问题?

感谢期待。

如果您的 IIS 8.0 在 Sever 2012 运行 OS 上是 运行,您将需要打开 'Application Initialization' 功能。
请访问this link了解更多信息。
只有添加该功能后,属性 'preloadEnabled=“True"'才会生效。
如果您在任何其他 OS 上遇到此问题,请告诉我。 希望这有帮助。