實戰解決IIS服務器的“HTTP 500 內部服務器錯誤”
日期:2017/2/8 10:29:30   編輯:關於服務器
今天同學的電腦的IIS服務器突然出問題了,讓我幫忙看看,我看了一下,他的系統是Windows XP SP2,IIS版本為5.1,故障現象是在浏覽器地址欄輸入http://127.0.0.1 後,出現" HTTP 500 內部服務器錯誤"的提示。
我在網上查了一下“HTTP 500 內部服務器錯誤”的原因之後,並在試了網上眾多的方法,但是都不行,甚至有的網友得出“只有重裝系統才能解決辦法”的結論,我在多次實驗過後,終於得出了真正的解決辦法,辦法如下:
1.運行—〉cmd—〉輸入net start msdtc,出現了該服務不能啟動的錯誤提示。
2.刪除注冊表中的鍵:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
HKEY_CLASSES_ROOT\CID
3.停止MSDTC服務:net stop msdtc
4.卸載MSDTC服務:msdtc -uninstall
5.重新安裝MSDTC服務:msdtc -install
6. 重啟電腦
7.啟動該服務:net start msdtc
8.重新設置IIS的IWAM賬號密碼。(在計算機管理中的用戶管理裡),如下圖:
9.同步IIS metabase中IWAM_MYSERVER的密碼,在CMD中:c:\inetput\adminscripts>adsutil set w3svc/wamuserpass "yourpassword"
10.同步COM+應用程序所用的IWAM_MYSERVER密碼,在CMD中:c:\inetput\adminscripts>cscript synciwam.vbs -v
11.在浏覽器地址欄輸入:http://127.0.0.1 ,可以發現此時的IIS已經在正常工作了,見下圖:
附:網上關於IWAM帳號的說明:
IWAM賬號是安裝IIS5時系統自動建立的一個內置賬號,主要用於啟動進程之外的應用程序的Internet信息服務。IWAM賬號的名字會根據每台計算機NETBIOS名字的不同而有所不同,通用的格式是IWAM_MACHINE,即由“IWAM”前綴、連接線“_”加上計算機的NETBIOS名字組成。我的計算機的NETBIOS名字是MYSERVER,因此我的計算機上IWAM賬號的名字就是IWAM_MYSERVER,這一點與IIS匿名賬號ISUR_MACHINE的命名方式非常相似。
IWAM賬號建立後被Active Directory、IIS metabase數據庫和COM+應用程序三方共同使用,賬號密碼被三方分別保存,並由操作系統負責這三方保存的IWAM密碼的同步工作。按常理說,由操作系統負責的工作我們大可放心,不必擔心出錯,但不知是BUG還是其它什麼原因,系統的對IWAM賬號的密碼同步工作有時會失敗,使三方IWAM賬號所用密碼不統一。當IIS或COM+應用程序使用錯誤IWAM的密碼登錄系統,啟動IIS Out-Of-Process Pooled Applications時,系統會因密碼錯誤而拒絕這一請求,導致IIS Out-Of-Process Pooled Applications啟動失敗,也就是我們在ID10004錯誤事件中看到的“不能運行服務器{3D14228D-FBE1-11D0-995D-00C04FD919C1} ”(這裡{3D14228D-FBE1-11D0-995D-00C04FD919C1} 是IIS Out-Of-Process Pooled Applications的KEY),不能轉入IIS5應用程序,HTTP 500內部錯誤就這樣產生了。