切換到 .net 4.0 後 IIS7 中的“伺服器應用程序不可用”
我們最近升級到 .Net 4.0 並為我們的應用程序編寫了一個自定義部署腳本,該腳本使用該
Microsoft.Web.Administration
庫來執行創建網站和設置應用程序池等操作。我們開始在開發人員盒子上測試程式碼,它似乎工作。然後我們注意到,如果開發人員重新建構應用程序,它將停止執行,並且 IIS7 會給我們這個(實際上無用的)錯誤消息:伺服器應用程序不可用
您嘗試在此 Web 伺服器上訪問的 Web 應用程序目前不可用。請在您的網路瀏覽器中點擊“刷新”按鈕以重試您的請求。
**管理員注意:**可在 Web 伺服器的應用程序事件日誌中找到詳細說明此特定請求失敗原因的錯誤消息。請查看此日誌條目以了解導致此錯誤發生的原因。
如果我們手動回收應用程序池,應用程序將立即啟動。我們在應用程序日誌中看不到任何事件或錯誤。池設置為在配置更改時自動啟動和回收。
我們已經嘗試了應用程序池、應用程序和 ASP.net 設置中的所有設置組合。我們嘗試以不同的使用者帳戶執行應用程序池。我們已嘗試刪除應用程序池和應用程序並通過 UI 手動重新創建,但問題仍然存在。
就好像使用
Microsoft.Web.Administration
庫會使機器中毒,所以它永遠不會再次自動重啟應用程序池??!!我們將不勝感激任何見解或調試建議。在我們了解導致這種情況發生的原因之前,我們無法在任何生產系統上執行它。
我在搜尋完全相同的錯誤描述時發現了這個執行緒。我發現了在我的情況下是什麼原因造成的。
我正在將應用程序從 .net 3.5 轉換為 4.0,在我將應用程序池從 2.0 更改為 4.0 之後,這開始了。它只發生在未集成的經典模式下。
就我而言,我在 web.config 中有萬用字元 http 處理程序:
<add name="Wildcard .net 64 bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="bitness64"/> <add name="Wildcard .net 32 bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="bitness32"/>
但我忘記更改 .net 4.0 目錄的路徑
所以在更改
\v2.0.50727\aspnet_isapi.dll
到\v4.0.30319\aspnet_isapi.dll
網站後開始正常執行。希望這可以幫助某人。