Asp.net

iisreset 後應用程序池未啟動

  • April 13, 2021

在開始之前,我知道使用 iisreset 被認為是不好的做法,但無論如何都不應該發生這種情況。

我們有什麼:

  • 在 Windows Server 2003 R2 上使用 IIS6 的幾台機器(64 位和 32 位)
  • 多個 WCF Web 服務(.NET 執行時 2.0)部署在多個應用程序中,每個應用程序都有自己的應用程序池,每個應用程序池在其他 Windows 帳戶下執行。

發生什麼了:

  • 所有 appPools 啟動,所有服務執行
  • IISReset 被執行(或機器重啟)
  • IIS 重新啟動,但並非所有應用程序池都正常啟動。有時它們都會重新啟動,有時一個或多個池無法啟動。但是,它們可以手動啟動。

這是“正常”的 iis 行為嗎?我應該避免使用 iisreset,還是我們在 .NET 程式碼中做錯了什麼?

應用程序池應在 iisreset 時重新啟動,但它們確實在 iis 之外執行(在 COM+ 中)以確保可靠性。這意味著如果應用程序行為不端,它們可能不會回來,但 IIS 和其他應用程序會(應該)回來。所以是的,這是“正常的”。

PS 作為iisreset的驕傲使用者,我也想“OUT”自己。不好的做法? 呸! ;D

原因:

在第一個請求進入之前,IIS 不會立即啟動 ASP.NET 工作程序 (w3wp.exe)。當它顯示“未啟動”時,意味著您嘗試訪問某些 WCF Web 服務(在 iisreset 之後)由於對象持有一些而失敗記憶體中的空間,並且由於無法啟動 appPool,您會收到 Service Unavailable 錯誤。

解決方法:

使用以下命令創建批處理文件並安排它。

淨停止 23svc

淨停止 msftpsvc

網路停止 smtpsvc

不要停止 PleskControlPanel

淨停止 HTTPFilter

iisreset /重啟

淨啟動 w3svc

網路啟動 msftpsvc

網路啟動 smtpsvc

不要啟動 PleskControlPanel

net 啟動 HTTPFilter

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