2

在我的 ASP.NET MVC 应用程序中,我将运行后台任务,有时会持续约 10 分钟。我已经阅读了该主题,发现应用程序域有时会重新启动,从而删除了我的线程。

因此,我查找了一些解决方案。我找到的主要解决方案是Hangfire。我知道它会在它们失败时重新启动作业等,但是它们是否以某种方式“绕过”应用程序域重新启动,或者在这种情况下它只是重新启动作业?

4

1 回答 1

6

我找到的主要解决方案是 Hangfire。我知道它会在它们失败时重新启动作业等,但是它们是否以某种方式“绕过”应用程序域重新启动,或者在这种情况下它只是重新启动作业?

不,他们不会绕过应用程序域重新启动 - 没有什么可以绕过它。从文档中引用:

Hangfire 将后台作业和与处理相关的其他信息保存在持久存储中。持久性有助于后台作业在应用程序重新启动、服务器重新启动等情况下继续存在。这是使用 CLR 的线程池和 Hangfire 执行后台作业的主要区别。支持不同的存储后端。

所以当你加入一个新任务时,第一件事就是将它存储在服务器上的一些持久存储中,而不是将它保存在内存中。这样,如果应用程序域死了,以后可以从这个持久存储中读取和恢复任务。

于 2015-08-23T20:38:26.393 回答