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

Meh*_*ela 4 quartz-scheduler quartz.net iis-8

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

\n\n

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

\n\n

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

\n\n

为了保持调度程序正常运行,应用程序池应该始终处于运行模式,因此我们设置了属性 startMode=\xe2\x80\x9cAlwaysRunning\xe2\x80\x9d 并且应用程序应该启动,因此我们设置了应用程序属性 preloadEnabled=\xe2\x80\x9cTrue\xe2\x80\x9d。

\n\n

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

\n\n

这里的问题是:

\n\n

如果我有工作安排在凌晨 3:00。我的应用程序池处于运行状态。

\n\n

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

\n\n

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

\n\n

当应用程序池被回收时,应用程序池将再次启动(因为属性startMode=\xe2\x80\x9cAlwaysRunning\xe2\x80\x9d),但进程ID(如果该工作进程会不同)。

\n\n

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

\n\n

有人可以尽早帮我解决这个问题吗?

\n\n

感谢期待。

\n

Man*_*hah 5

如果您的 IIS 8.0 在 Sever 2012 操作系统上运行,您将需要打开“应用程序初始化”功能。\n
请访问此链接以获取更多信息。\n
只有添加该功能后,属性 \'preloadEnabled=\xe2\x80\x9cTrue"\' 才会生效。\n
如果您遇到此问题,请告诉我在任何其他操作系统上。\n希望这有帮助。

\n