Dot-Net

如何讓託管在 IIS 中的 .Net Core 網站立即啟動?

  • September 11, 2020

這篇博文解釋了當 .Net Core 網站託管在 IIS 中時,網站程式碼在第一個請求進入 IIS 之前實際上不會執行:

https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS

這正是我所看到的行為,一旦第一個請求進來,一切都開始執行。我有一個案例,我真的需要網站程式碼在 IIS 啟動後立即啟動。有沒有辦法在網站內以程式方式執行此操作或在配置中使用某些東西,所以我不必記得每次 IIS 重新啟動時都 ping 我的網站?謝謝你。

我嘗試了我讀到的每一個自動啟動選項,最後想出了一個解決我問題的組合。在應用程序池上將“啟動模式”設置為“AlwaysRunning”,在網站本身上,將“Preload Enabled”設置為“true”。使用這兩個設置,應用程序會立即啟動。現在,我確實發現了一些意想不到的東西。當網站處於停止狀態時,我的應用程序繼續執行。我發現如果我想停止我的應用程序,我必須停止應用程序池,而不是網站。

如果這不起作用,還要確保為 IIS 安裝了應用程序初始化功能,因為它是可選的。

https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-application-initialization

Core 3.1 更新:我已確認此解決方案適用於 Core 3.1。如果您發現它不起作用,請仔細檢查您是否為 IIS 安裝了應用程序初始化功能。此解決方案的缺點是停止應用程序池會立即停止我的應用程序,而無法正常結束。如果未安裝應用程序初始化功能,我的應用程序將在應用程序池停止時正常停止,但隨後應用程序不會自動啟動。

引用自:https://stackoverflow.com/questions/46551660