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

标签 quartz-scheduler quartz.net iis-8

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

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

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

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

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

这里的问题是:

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

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

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

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

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

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

感谢期待。

最佳答案

如果您的 IIS 8.0 在 Sever 2012 操作系统上运行,您将需要打开“应用程序初始化”功能。
请访问this link了解更多信息。
只有在添加特性后,属性'preloadEnabled=“True”'才会生效。
如果您在任何其他操作系统上遇到此问题,请告诉我。 希望这会有所帮助。

关于quartz-scheduler - Quartz 调度程序在应用程序池回收后不执行作业(.Net),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022741/

相关文章:

c# - 如何在 Quartz.net 的 Interrupt 方法中访问 IJobexecutionContext?

iis-8 - Octopus 部署 : Enable SNI on IIS HTTPS binding?

jboss - Jboss AS 7.0 如何启用 Quartz 调度?

Grails 取消计划 quartz 作业

unit-testing - 如何从我的单元测试中触发 Quartz Cronjob

c# - Quartz.Net - 立即执行作业并删除 ADODataStore 中的触发器和作业

file - Grails - 从 Quartz 作业和过滤器记录日志

quartz.net - 在保留 "quartz_jobs.xml"文件的代码中创建作业

asp.net-core - HTTP 错误 502.5 - ANCM 进程外启动失败 - .net core 2.2

.net - 使用 SNI 选项以编程方式在 IIS 8 上添加绑定(bind)