使核心应用始终 ASP.NET IIS 中运行



我在 IIS 中托管了一个 ASP.NET Core (2.2( 应用程序。

应用正在使用具有以下设置的自定义应用池:

.NET CLR version: No Managed Code
Start Mode: Always Running
Idle Time-out (minutes): 0

我的启动代码如下所示:

WebHost.CreateDefaultBuilder(args)
.UseStartup<MyStartup>() 
.Build() 
.Run();

我预计该应用程序将始终运行,但是一段时间后,该应用程序在收到以下请求后停止:

[Microsoft.AspNetCore.Hosting.Internal.WebHost] 请求启动 HTTP/1.1 POST http://127.0.0.1:43745/app/iisintegration 0 [Microsoft.AspNetCore.Hosting.Internal.WebHost] 请求已完成 5.7107毫秒 202

应用是子应用。父应用正在使用不同的应用池,并且确实存在空闲超时。

我是否缺少一些设置来始终保持应用程序正常运行?

找到了一个有效的解决方案。需要使用进程内托管模型托管 ASP.NET Core 2.2 应用。可以按照以下步骤操作。

  1. 安装应用程序初始化模块 (IIS(

服务器管理器> 添加角色和功能> Web 服务器 (IIS(>应用程序开发>应用程序初始化>服务器角色

  1. IIS>应用程序池>启动模式>始终运行

  2. IIS>应用程序池>空闲超时> 0

  3. IIS>你的应用>高级设置>预加载已启用> true

  4. 为进程内托管模型设置应用(核心模块 Asp.net web.config 更改和代码更改以设置正确的当前目录(

更多信息可以在以下位置找到:

  • https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2

  • https://github.com/aspnet/AspNetCore.Docs/issues/12232

  • https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2

  • https://github.com/aspnet/AspNetCore/issues/6075

最新更新