【发布时间】:2019-02-04 16:46:14
【问题描述】:
我正在尝试将 hangfire 与 .net 核心网络应用程序一起使用。这些例子看起来很简单,但是我有问题。
如果我想按 cron 计划运行作业,即使 iis 应用程序池处于休眠状态,我是否应该考虑将 hangfire 服务器放在 windows 服务中?
如果在 Web 应用程序中同时使用服务器和客户端,文档中提到修改根 .net 配置文件以允许您的应用程序始终运行。 http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html
为什么不能简单地将应用程序池超时设置为 0?
另一种选择是将hangfire 服务器作为Windows 服务项目的一部分。如果不是真的需要,我宁愿不要弄乱 Windows 服务。即使没有用户向应用程序发出请求以防止应用程序池进入睡眠状态,也需要运行计划的作业(通过 cron 计划)来执行。设置应用程序池空闲超时应该做同样的事情不应该吗?
【问题讨论】:
-
你有什么反对将它作为 Windows 服务运行的?如果您的代码不需要 HTTP 上下文来运行,那么它不应该在 Web 应用程序中。如果您真的想要按照您的描述进行操作,Hangfire 的文档描述了如何将您的应用程序池置于始终运行模式。但我不推荐它。这是对 Web 应用程序用途的滥用。
-
这就是你应该挑战 Hangfire 开发者的东西。如果您在网络应用程序中使用该项目,如果您在互联网上搜索会导致比以往更多的问题,而微软从不推荐这样做。请运行 Windows 服务,这是正确处理的任务。
-
微软确实在 2017 年写过一篇推荐它的博文(但现在被删除了)。