我们有内部使用的 ASP.NET Core 应用程序,该应用程序在办公时间使用,并且有一批应在每天凌晨 3 点处理,计划由HangFire
像这样:
RecurringJob.AddOrUpdate(
() => MyBatch(),
"0 0 3 1/1 *");
问题是,如果未手动启动站点(通常通过访问网站),应用程序池将进入睡眠状态并且不会处理批处理。
I have searched SO and tampered with these settings in the Application Pool but with no success:
我用来修改设置的一些来源:
- 如何防止/延长 IIS 7 中的idleTimeout? https://stackoverflow.com/questions/3891178/how-to-prevent-extend-idletimeout-in-iis-7
- https://serverfault.com/questions/443065/how-do-i-prevent-iis-8-from-stopping-idle-asp-net-applications https://serverfault.com/questions/443065/how-do-i-prevent-iis-8-from-stopping-idle-asp-net-applications
- IIS 似乎要休眠直到下一个请求 https://stackoverflow.com/questions/12926615/iis-seems-like-to-sleep-until-the-next-request
应用程序池总共由 7 个应用程序使用(所有应用程序在夜间应处理批次时均处于非活动状态)。使用的应用程序池使用.NET CLR Version
2.0
。
我使用的是 IIS 版本 10.0.17134.1。
如何使应用程序池保持活动状态,以便每天早上定期调用该批处理?
我遇到了同样的问题,即使将“AlwaysRunning”作为应用程序池的启动模式,将站点的“Preload Enabled”设置为 true,并将空闲超时设置为 0,我的 ASP.NET Core 应用程序也会进入空闲状态。
我通过安装让它工作应用程序初始化模块 https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-application-initialization并将 .NET CLR 版本设置为 v4.0。不要使用“无托管代码”,因为这会阻止“始终运行”触发应用程序启动。
我写了一个博客文章 https://medium.com/@taithienbo/how-to-auto-start-and-keep-an-asp-net-core-web-application-running-on-iis-9acc0fb6784b在此更详细地解释我为使应用程序连续运行而采取的步骤。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)