ASP.NET 核心中的 kestrel 服务器是否可以在启动时配置空闲超时

Can kestrel server in ASP.NET core be configured with idle timeout at startup

我在 ASP.NET core web api 中使用 HostedService,它将部署在本地 IIS 实例中(.NET Core 2.2)。我需要确保空闲超时设置为零以确保后台服务将 运行 连续,我相信这可以通过将应用程序池上的空闲超时设置为零来完成。但是,这需要 IIS 管理员执行此操作设置所以我想知道是否有一种方法可以在程序 class.

CreateWebHostBuilder() 方法中首次配置 kestrel 时将其配置为零空闲超时

这可能吗?

当您使用 IIS 作为 ASP.NET 核心应用程序的反向代理时,IIS 会启动进程,应用程序池的空闲超时决定何时关闭进程。 IIS 知道没有活动的请求,它会在不向进程请求许可的情况下终止进程。所以你的应用程序无法阻止它。 (你必须意识到,如果你 运行 应用程序中的任何后台作业 - IIS 不知道这些,并且可能会在 运行ning 的中间杀死你的应用程序)

如果您 运行 没有 IIS,它根本不会自动关闭,因为关闭意味着不再有任何东西在侦听新连接。这就是使用 IIS 的好处:如果出现灾难性故障,它可以重新启动您的应用程序。

因此,如果您打算将您的应用程序置于 IIS 之后,并且您希望它永不关闭,那么您将必须更改应用程序池的设置。