Asp.net-Core
讓 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 應用程序。可以按照以下步驟進行操作。
- 安裝應用程序初始化模組 (IIS)
伺服器管理器 > 添加角色和功能 > 伺服器角色 > Web 伺服器 (IIS) > 應用程序開發 > 應用程序初始化
- IIS > 您的應用程序池 > 啟動模式 > 始終執行
- IIS > 您的應用程序池 > 空閒超時 > 0
- IIS > 您的應用程序 > 高級設置 > 已啟用預載入 > True
- 為程序內託管模型設置您的應用程序(Asp.net 核心模組的 web.config 更改和程式碼更改以設置正確的目前目錄)
更多資訊可以在以下位置找到: