【问题标题】:Quartz scheduler not executing job after app pool recycle (.Net)应用程序池回收后石英调度程序不执行作业(.Net)
【发布时间】:2015-06-24 09:26:26
【问题描述】:

我们有一个托管在 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-scheduler quartz.net iis-8


    【解决方案1】:

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

    【讨论】:

    • 谢谢伙计。有效。启用此功能后,调度程序将不间断地工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2023-03-16
    • 2019-11-22
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多