应用程序池回收后,Hangfire 重复性工作停止

LP1*_*P13 6 hangfire asp.net-core asp.net-core-webapi asp.net-core-2.1 hangfire-sql

我使用 .NET Core 附带的 Windows Hosting 模块在 IIS 下运行 ASP.NET Core API (v 2.2)。我已经在 startup.cs 中配置了 Hangfire,其中包含几个重复的作业。

由于不活动,API 的应用程序池会定期回收。但是,每当应用程序池被回收(出于任何原因)时,循环作业就会停止运行,直到第一个用户调用 api。

Hangfire 文档有解决方案,但它特定于 Full .NET,可能不适用于 .NET Core。

我找到的解决方案之一是在控制台应用程序中运行重复性作业,但随后我必须创建和维护另一个应用程序。此外,除了重复性作业之外,API 在内部还会创建后台作业以进行单向调用。例如

[HttpPost]
public IActionResult DoWork(int id)
{
    BackgroundJob.Enqueue<IWorkerService>(x => x.DoWork(id));
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我仅为重复性作业创建控制台应用程序,我仍然必须在 API 中为后台作业配置 Hangfire。我试图避免在两个地方配置 Hangfire。

我在 ASP.NET Core 中有哪些选项可以让 API 始终运行?

更新 1
基于此处的讨论我对应用程序池设置进行了更改

设置Regular Time Interval为 0

在此处输入图片说明

Idle Time-Out从默认 20更改为 0 在此处输入图片说明

我会等几天看看这个设置是如何工作的

但是,我不确定不回收应用程序池是否是个好主意?任何建议

Sen*_*dru 0

理想情况下,您应该遵循官方文档

在您的情况下,您还应该将托管管道模式设置为Integrated,将启动模式设置为Always Running,将预加载启用为true,并在配置编辑器中进行一些编辑。

所有这些都在官方文档中提到并有更详细的说明(上面链接)。