Asp.net-Core

讓 ASP.NET 核心應用程序始終在 IIS 中執行

  • December 12, 2019

我在 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://stackoverflow.com/questions/57523899