当 IIS 应用程序池可能空闲时,如何允许作业 运行 下班后?

How to allow jobs to run after-hours when IIS app pool may be idle?

我正在尝试将 hangfire 与 .net 核心网络应用程序结合使用。这些例子看起来很简单,但是我有疑问。

如果我想 运行 按 cron 计划执行作业,即使 iis 应用程序池处于休眠状态,我是否应该考虑将 hangfire 服务器置于 windows 服务中?

如果在 Web 应用程序中同时使用服务器和客户端,文档提到修改根 .net 配置文件以允许您的应用程序始终 运行ning。 http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html

为什么不能直接将应用程序池超时设置为 0?

另一种选择是将 hangfire 服务器作为 windows 服务项目的一部分。如果不是真的需要,我宁愿不弄乱 windows 服务。这需要 运行 计划作业(通过 cron 计划)执行,即使没有用户向应用程序发出请求以防止应用程序池进入休眠状态。设置应用程序池空闲超时应该做同样的事情不是吗?

你应该永远不要期望一个网站运行像这样的扩展工作。它们旨在 运行 快速(大概)调用和操作以及 return 结果。建议使用 Windows 服务。一旦你开始搞乱应用程序池超时等,你就是在自找麻烦。

随着 Net Core 2.2 的发布,我现在可以修改这个答案了。 MS 添加了 "Background Task" 服务,该服务允许在服务器处于活动状态时 运行 在服务器上发送内容:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.2&tabs=visual-studio