我正在使用 HostedService
里面 ASP.NET core web api
将部署在本地 IIS 实例中( .NET Core 2.2)
。我需要确保空闲超时设置为零,以确保后台服务持续运行,我相信这可以通过在应用程序上设置空闲超时来完成但是,这需要 IIS
管理员在设置时执行此操作,因此我想知道是否有一种方法可以在首次在 CreateWebHostBuilder()
方法中配置 kestrel 时将其配置为零空闲超时程序类。
这可能吗?
最佳答案
当您使用 IIS 作为 ASP.NET Core 应用程序的反向代理时,IIS 会启动该进程,并且应用程序池上的空闲超时将决定何时关闭该进程。 IIS 知道没有事件请求,它会直接终止该进程,而不询问该进程的权限。所以你的应用程序无法阻止这种情况。 (您必须注意,如果您在应用程序中运行任何后台作业 - IIS 不知道这些作业,并且可能会在运行过程中终止您的应用程序)
如果您在没有 IIS 的情况下运行,它根本不会自动关闭,因为关闭意味着没有任何东西再监听新连接。这就是使用 IIS 的好处:如果出现灾难性故障,它可以重新启动您的应用程序。
因此,如果您计划将应用程序保留在 IIS 后面,并且希望它永远不会关闭,那么您将必须更改应用程序池的设置。
关于c# - ASP.NET core中的kestrel服务器可以在启动时配置空闲超时吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57893159/