Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

徹底解決 IIS「Server Application Error」與 HTTP 500 內部伺服器錯誤:MSDTC、IUSR/IWAM 密碼同步完整實錄

編輯:關於伺服器

錯誤現象

瀏覽 ASP/ASP.NET 頁面出現:

Server Application Error
The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.

或 IIS 通用 HTTP 500 內部伺服器錯誤。事件檢視器中常見 MSDTC (Distributed Transaction Coordinator) 相關錯誤。

診斷流程與圖解步驟

1. 檢查事件檢視器 → 應用程式日誌

尋找來源為 MSDTC 的錯誤事件,雙擊查看詳細資訊,常見提示:「遺漏記錄檔,無法啟動 MSDTC 服務」。

電腦管理:事件檢視器應用程式日誌

步驟 1:在「電腦管理」中開啟事件檢視器 → 應用程式日誌

MSDTC 錯誤事件詳細資訊

步驟 2:雙擊 MSDTC 錯誤事件,查看缺少記錄檔提示

MSDTC 錯誤:缺少記錄檔

步驟 3:錯誤明確指出缺少記錄檔,建議執行 msdtc -resetlog

2. 修復 MSDTC 服務 (若缺少記錄檔)

  1. 開啟命令提示字元 (系統管理員)。
  2. 執行:msdtc -resetlog 重建記錄檔。
  3. 在「服務」中啟動 Distributed Transaction Coordinator 服務。
  4. 重新測試 ASP 頁面,若恢復正常則結束;否則繼續下一步。
服務清單中出現 Distributed Transaction Coordinator

MSDTC 服務啟動後會出現在服務清單中

3. 核心修復:同步 IUSR_機器名 與 IWAM_機器名 密碼

許多 HTTP 500 錯誤源於 IIS 匿名存取帳號 (IUSR) 與進程身分帳號 (IWAM) 密碼不一致,導致 COM+ 元件 (IIS Out-Of-Process Pooled Applications) 無法正確模擬身分。

  1. 開啟「電腦管理」→「本機使用者和群組」→「使用者」。
  2. 找到 IUSR_機器名 與 IWAM_機器名 兩個帳號。
  3. 分別右鍵 → 「設定密碼」→ 輸入相同密碼 (例如 P@ssw0rd123) → 確定。
本機使用者清單:IUSR 與 IWAM

本機使用者清單中確認 IUSR_機器名 與 IWAM_機器名 存在

修改 IUSR 密碼對話框

右鍵 IUSR_機器名 → 設定密碼,輸入統一密碼

密碼修改確認

同樣操作修改 IWAM_機器名 密碼為相同值

4. 同步 COM+ 應用程式身分識別 (關鍵步驟)

  1. 開啟「元件服務」 (dcomcnfg) → 「元件服務」→「電腦」→「我的電腦」→「COM+ 應用程式」。
  2. 右鍵 IIS Out-Of-Process Pooled Applications → 「內容」→「身分識別」標籤。
  3. 選擇「這個使用者」→ 瀏覽選取 IWAM_機器名 → 輸入剛設定的統一密碼 → 確定。
  4. 重新啟動該 COM+ 應用程式 (右鍵 → 關閉 → 再右鍵 → 啟動)。

5. 關閉不必要的驗證 (降低錯誤機率)

在同一 COM+ 應用程式屬性中:

  • IIS In-Process Applications → 「安全性」→ 取消勾選「啟用驗證」。
  • IIS Utilities → 「安全性」→ 取消勾選「啟用驗證」。

驗證與總結

  1. 執行 iisreset 重新啟動 IIS。
  2. 瀏覽原本出錯的 ASP/ASP.NET 頁面,應正常顯示內容,不再出現 Server Application Error 或 HTTP 500。
核心檢查清單:
1. 事件檢視器無 MSDTC 錯誤 (已執行 msdtc -resetlog 並啟動服務)
2. IUSR_機器名 與 IWAM_機器名 密碼完全一致
3. COM+「IIS Out-Of-Process Pooled Applications」身分識別設為 IWAM_機器名 且密碼正確
4. IIS In-Process Applications / Utilities 已關閉「啟用驗證」
5. 執行 iisreset 生效
Copyright © Windows教程網 All Rights Reserved