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

IIS 5.0 HTTP 500 內部伺服器錯誤:深度解析與完整解決方案

編輯:關於伺服器

前言

在 Windows 2000 Server 環境下運行 IIS 5.0 時,HTTP 500 內部伺服器錯誤是系統管理員最常遇到的棘手問題之一。這類錯誤的典型特徵是:ASP 動態網頁無法瀏覽,但靜態 HTM/HTML 頁面卻能正常訪問;同時系統事件日誌與安全性日誌中會記錄大量相關錯誤資訊。本文將從錯誤表現、根本原因分析到分步驟解決方案,為您提供一份完整的排錯指南。

一、錯誤具體表現

1. 瀏覽器端錯誤畫面

當嘗試訪問原本正常運行的 ASP 頁面時,Internet Explorer 會顯示以下兩種典型錯誤畫面:

  • 標準友好錯誤頁面:顯示「網頁無法顯示... HTTP 500 - 內部伺服器錯誤 Internet 資訊服務 技術資訊(支援個人)詳細資訊:Microsoft 支援」
  • 伺服器應用程式錯誤:顯示「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.」

2. 安全性事件日誌記錄(兩條失敗審核事件)

事件 ID 529 - 登錄失敗
事件類型:失敗審核 | 事件來源:Security | 事件種類:登錄/登出
描述:登錄失敗,原因:使用者名稱未知或密碼錯誤
使用者名稱:IWAM_MYSERVER | 域:MYDOM | 登錄類型:4

事件 ID 681 - 帳戶登錄失敗
事件類型:失敗審核 | 事件來源:Security | 事件種類:帳戶登錄
描述:登錄到帳戶 IWAM_MYSERVER 失敗,錯誤代碼:3221225578 (0xC000006A - 使用者名稱或密碼錯誤)

3. 系統事件日誌記錄(兩條關鍵事件)

事件 ID 10004 - DCOM 錯誤
事件類型:錯誤 | 事件來源:DCOM
描述:DCOM 遇到錯誤「無法更新密碼。提供給新密碼的值包含密碼中不允許的值。」並且無法登錄到 .\IWAM_MYSERVER 上以運行伺服器:{3D14228D-FBE1-11D0-995D-00C04FD919C1}

事件 ID 36 - W3SVC 警告
事件類型:警告 | 事件來源:W3SVC
描述:伺服器未能載入應用程式 '/LM/W3SVC/4/Root'。錯誤是 'RunAs 的格式必須是<域名>\<使用者名稱>或只是<使用者名稱>'。

二、根本原因深度分析

1. IWAM 帳戶機制解析

IWAM (Internet Web Application Manager) 帳戶是 IIS 5.0 安裝時系統自動建立的內建帳戶,命名格式為 IWAM_<電腦 NetBIOS 名稱>(如 IWAM_MYSERVER)。其核心職責是啟動 IIS Out-of-Process Pooled Applications(進程外集區應用程式),即以獨立進程運行的 ASP 應用程式。

2. 三方密碼同步機制與失效點

IWAM 帳戶密碼由三方共同持有並使用:

  1. Active Directory - 存儲帳戶實際密碼
  2. IIS Metabase 資料庫 - 存儲 WAMUserPass 屬性
  3. COM+ 應用程式 (Out-of-Process Pooled Applications) - 存儲在元件服務中配置的執行身份密碼

理論上,作業系統負責同步這三方的密碼。但由於未知原因(可能是 Bug 或特定操作導致),同步機制偶爾會失效,造成三方密碼不一致。當 IIS 或 COM+ 嘗試使用錯誤密碼登入系統啟動應用程式池時,系統拒絕登入請求,導致應用程式池啟動失敗,最終引發 HTTP 500 錯誤。

三、完整解決方案:人工同步三方密碼

核心思路:將 IWAM 帳戶在 Active Directory、IIS Metabase、COM+ 三處的密碼手動統一為一個已知值。所有操作需以 Administrator 身份執行。

步驟 1:重設 Active Directory 中 IWAM 帳戶密碼

  1. 開啟「Active Directory 使用者和電腦」管理單元 (dsa.msc)
  2. 定位到 Users 容器,右鍵點擊 IWAM_MYSERVER 選擇「重設密碼」
  3. 設定新密碼(範例:Aboutnt2001),取消勾選「使用者下次登入時必須變更密碼」,確定完成

步驟 2:同步 IIS Metabase 中的 WAMUserPass

IIS 5.0 提供管理腳本 adsutil.vbs(預設位於 C:\Inetpub\AdminScripts\)來修改 Metabase 設定:

cd C:\Inetpub\AdminScripts
cscript adsutil.vbs SET w3svc/WAMUserPass "Aboutnt2001"

成功時顯示:WAMUserPass : (STRING) "Aboutnt2001"

步驟 3:同步 COM+ 應用程式執行身份密碼

方法 A:使用元件服務 MMC (手動逐個同步)

  1. 執行 mmc,新增「元件服務」嵌入式管理單元
  2. 展開:元件服務 → 電腦 → 我的電腦 → COM+ 應用程式 → Out-of-Process Pooled Applications
  3. 右鍵選「內容」→ 「啟用」頁籤 → 「此使用者」輸入密碼 Aboutnt2001 並確認
  4. 若有其他 Web 應用程式設為「高 (獨立)」,需對應同步其 COM+ 應用程式密碼

方法 B:使用 synciwam.vbs 腳本 (自動批量同步,推薦)

腳本位於 C:\Inetpub\AdminScripts\synciwam.vbs,用法簡單:

cscript synciwam.vbs -v

關鍵優勢:腳本會自動從 IIS Metabase 讀取 IWAM 密碼,掃描所有 Out-of-Process Applications 並逐一同步,比手動方式更全面、快捷。

⚠ 關鍵前提:執行 synciwam.vbs 前,必須確保 IIS Metabase 與 Active Directory 的 IWAM 密碼已一致。因為腳本從 Metabase 讀取密碼,若 Metabase 密碼錯誤,同步會失敗並報錯 80110414(找不到應用程式)。

四、驗證與後續維護

完成上述三步驟後,重新啟動 IIS (iisreset) 或重新啟動伺服器。此時 ASP 頁面應恢復正常訪問。建議定期檢查事件日誌,確保無新的 ID 10004、ID 36 錯誤產生。若環境允許,升級至 IIS 6.0+ (Windows Server 2003+) 可從根本上避免此類問題,因為新版本採用了應用程式池身份機制,不再依賴單一 IWAM 帳戶。

Copyright © Windows教程網 All Rights Reserved