Windows Server 2003 + IIS 6.0 環境部署 ASP.NET 2.0 應用程式,常遇到 Server Application Unavailable 錯誤,伴隨堆疊追蹤顯示 System.Reflection.Assembly.InternalLoad、System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment 等訊息。本文提供完整排查與修復流程。
at System.Reflection.Assembly.InternalLoad(...)
at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(...)
... (完整堆疊見原文) ...
2.0.50727。網站實體路徑資料夾需授予下列帳戶 讀取/寫入/執行 權限:
ASPNET(ASP.NET 1.1 相容)Network Service(IIS 6.0 預設應用程式集區身分)Local ServiceIWAM_<MachineName>SystemAdministratorsIIS_WPG 群組(含上述服務帳戶)操作:右鍵資料夾 → 內容 → 安全性 → 編輯 → 新增 輸入帳戶名稱 → 檢查名稱 → 給予權限。
執行指令修復:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i -enable
參數 -enable 會啟用 ISAPI 限制清單中的 ASP.NET 2.0 擴充功能。
Web.config XML 結構完整,無殘留 BOM 或編碼問題。Web.config 繼承父層設定,確保 <clear /> 正確清除不需要的模組/處理常式。<system.web><httpRuntime targetFramework="2.0" /></system.web> 明確宣告目標框架。若集區使用自訂網域帳戶,確認密碼未過期,且帳戶具備「作為批次工作登入」、「拒絕從網路存取此電腦」等本地安全性原則權限。
ASP.NET 2.0.50727.0 或 W3SVC。https://localhost/ 測試預設網站是否正常。test.aspx:<%= DateTime.Now %> 驗證 ASP.NET 執行。Web.config 或程式碼;若異常,問題在 IIS/ASP.NET 設定。暫時修改 Web.config 顯示完整錯誤:
<system.web>
<customErrors mode="Off" />
<compilation debug="true" />
</system.web>
瀏覽器將顯示完整黃色死機畫面(YSOD),含原始碼行號與堆疊追蹤。
Win2003 IIS 6.0 部署 ASP.NET 2.0 核心在於:應用程式集區版本正確、虛擬目錄權限完整、ISAPI 對應已註冊。依序檢查上述三點可解決 90% 以上案例。若持續失敗,請提供事件檢視器完整錯誤訊息與 aspnet_regiis -lv 輸出內容尋求協助。