Windows-Server-2008-R2
將新的 DLL 上傳到 asp.net BIN 文件夾會導致 IIS 7 提供服務不可用
我的 Windows Server 2008 R2 Web 伺服器上有一個 asp.net 4 電子商務網站。我將更新的 DLL 上傳到 /bin 文件夾,當然該站點會重新編譯。這是一個網站項目,而不是 Web 應用程序。多次網站不會恢復,我會收到服務不可用錯誤(我認為是 503)。我必須 RDP 進入伺服器並執行 IISRESET 以將其恢復。不幸的是,這會循環伺服器上的所有內容。
為什麼會發生這種情況,我該如何預防?當 /bin 文件夾更改並且沒有 IIS 超時或導致此錯誤的任何原因時,如何使站點重新編譯成功?
謝謝你。
這是 ASP.NET 和部署之間的競爭條件。當第一個應用程序文件或文件夾被觸摸時,將會有一個 appdomain 回收,這將在部署過程中快速連續發生。如果它以無序結束,則 ASP.NET 可能會被丟棄並保持中斷狀態。大多數應用程序不會發生這種情況,但某些應用程序會發生這種情況,尤其是那些在部署期間處於高負載狀態的大型站點。
解決方案是在一切完成後“觸摸”您的 web.config 文件。這將導致僅為您的站點回收 appdomain,而不需要在整個伺服器上進行重置。通過觸摸,只需在部署完成後再次上傳 web.config。
另一種選擇是在部署期間使用 App_Offline.htm。
以下是我在 AppDomains 和本地化回收上發布的一些影片部落格,您可能會發現它們很有用:
- AppDomains - 它們是什麼以及為什麼它們很重要
- IIS 重疊應用程序池(討論 w3wp.exe 工作程序的完全回收,這是您執行完整 iisreset 之前的另一個選項)