Asp.net-Core
.NET Core 3 - IIS - 應用程序初始化不起作用
為了使用 .NET Core MVC 框架執行後台任務,我一直在關注IHostedService文件。
我希望該服務在 IIS 中自動啟動,但是它不起作用。
我做了以下事情:
- 在 Windows 伺服器上安裝應用程序初始化功能
- 在網站上將“預載入”設置為 true
- 在 AppPool 上,設置“AlwaysRunning”
- 在 AppPool 上,將“空閒超時”設置為 0
- 在 AppPool 上,確保它在“無託管程式碼”下執行
- 在 ApplicationInitialization 配置中,設置以下標誌:
- doAppInitAfterRestart = True
- skipManagedModules = False
- 添加了一個initializationPage鍵,=“/start”(一個空白的MVC呼叫只是為了啟動應用程序)
奇怪的是,這些步驟適用於全新的 Windows Server 安裝,但不適用於我要使用的伺服器。
在有問題的伺服器上,我可以看到 w3wp 程序嘗試啟動 dotnet 程序(通過 Procmon),但在我從瀏覽器發送真正的 HTTP 請求之前,它實際上並沒有執行任何 dotnet 核心程式碼。
我已經閱讀了許多 GitHub 執行緒,這些執行緒說無論確切的 IIS 版本如何,這都應該可以工作 - 還有什麼可能發生的?
要在網站上將“預載入”設置為 true,您還需要在網站上啟動匿名身份驗證
對於將來訪問此頁面的任何人。我剛剛完成了這項工作,我最終發現,無論你想點擊什麼端點來“預載入”你的應用程序,都必須是匿名的。一旦我這樣做了,我的工作就開始成功了。