ASP.NET Core 中的 kestrel 服务器可以在启动时配置空闲超时吗

Gee*_*ekn 5 c# kestrel asp.net-core

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

这可能吗?

Gab*_*uci 5

当你使用 IIS 作为 ASP.NET Core 应用程序的反向代理时,IIS 启动进程,应用程序池上的空闲超时决定何时关闭进程。IIS 知道没有活动的请求,它只会终止进程而不询问进程的许可。因此,您的应用程序无法阻止它。(您必须注意,如果您在应用程序中运行任何后台作业 - IIS 不知道这些,并且可能会在运行中杀死您的应用程序)

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

因此,如果您计划将您的应用程序保留在 IIS 之后,并且您希望它永远不会关闭,那么您必须更改应用程序池上的设置。