解決XP的IIS "HTTP 500”內部服務器錯誤--asp和asp.net服務器ISS

解決XP的IIS "HTTP 500”內部服務器錯誤--asp和asp.net服務器ISS

      這幾天公司裏接了幾個站點優化的單子,不過非常無奈,這些爛站都是asp寫的,都是模板形式的,需要修改後才能優化,所以,這幾天就專門回頭看一下asp,但不幸的是剛一開始安裝IIS就遇到了問題--http:500錯誤,具體表現在http頁面能運行,asp頁面不能運行,於是在網上找了幾個方法如下:

1.  轉載自:http://www.cnblogs.com/wf225/archive/2008/04/30/1178058.html

     作者:吳鋒, Bill Wu

     今天培訓銷售人員安裝asp.net運行環境,真是各種情況都遇到了,IIS安裝完成,一運行出現“HTTP 500 - 內部服務器錯誤”,網上找了一圈,處理方法那個叫複雜,在研究完複雜方法之後,發現只要三步就可以解決問題了。
1. 運行:regsvr32 %windir%/system32/vbscript.dll (其實這一步也可以省,確保萬一,還是執行吧)
2. 運行:msdtc -resetlog
3. 重新安裝IIS

註釋:
1. 微軟只隨IIS5提供了一個管理腳本adsutil.vbs,這個腳本位於C:/inetpub/adminscripts子目錄下,首先註冊vbscript.dll。
2. msdtc.exe是微軟分佈式傳輸協調程序。該進程調用系統Microsoft Personal Web Server和Microsoft SQL Server,該服務用於管理多個服務器,必須確保該服務正常啓動。
(1)控制面板->管理工具->組件服務
(2)找到“組件服務”->“計算機”->“我的電腦”->“COM+應用程序”->“IIS Out-Of-Process Pooled Applications”

3. 如果找不到“IIS Out-Of-Process Pooled Applications”,或在點擊不能打開“COM+應用程序”,執行完“msdtc -resetlog”後,重新安裝IIS即可。

2.  這篇原理講的比較好。

     轉載自:http://www.cnblogs.com/wangzhq/archive/2008/12/02/1345973.html

     作者:wangzhq

     

IIS500錯誤,是因爲微軟的一個BUG所造成的。下面是解決辦法:

主要是由於IWAM賬號(在我的計算機即是IWAM_MYSERVER賬號)的密碼錯誤造成了HTTP 500內部錯誤。

在詳細分析HTTP500內部錯誤產生的原因之前,先對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內部錯誤就這樣產生了。


解決辦法

手工同步賬號

 


知道了導致HTTP 500內部錯誤的原因,解決起來就比較簡單了,那就是人工同步IWAM賬號在Active Directory、IIS metabase數據庫和COM+應用程序中的密碼。

具體操作分三步,均需要以管理員身份登錄計算機以提供足夠的操作權限(IWAM賬號以IWAM_MYSERVER爲例)。


(一)更改Active Directory中IWAM_MYSERVER賬號的密碼

因IWAM賬號的密碼由系統控制,隨機產生,我們並不知道是什麼,爲完成下面兩步的密碼同步工作,我們必須將IWAM賬號的密碼設置爲一個我們知道的值。

1、選擇“開始”->“程序”->“管理工具”->"Active Directory用戶和計算機",啓動“Active Directory用戶和計算機”管理單元。

2、單擊“user”,選中右面的“IWAM_MYSERVER”,右擊選擇“重設密碼(T)...”,在跳出的重設密碼對方框中給IWAM_MYSERVER設置新的密碼,這兒我們設置成“Aboutnt2001”(沒有引號的),確定,等待密碼修改成功。


(二)同步IIS metabase中IWAM_MYSERVER賬號的密碼

可能因爲這項改動太敏感和重要,微軟並沒有爲我們修改IIS metabase中IWAM_MYSERVER賬號密碼提供一個顯式的用戶接口,只隨IIS5提供了一個管理腳本adsutil.vbs,這個腳本位於 C://inetpub//adminscripts子目錄下(位置可能會因你安裝IIS5時設置的不同而有所變動)。

adsutil.vbs腳本功能強大,參數非常多且用法複雜,這裏只提供使用這個腳本修改IWAM_MYSERVER賬號密碼的方法:

adsutil SET w3svc/WAMUserPass Password

"Password"參數就是要設置的IWAM賬號的新的密碼。因此我們將IIS metabase中IWAM_MYSERVER賬號的密碼修改爲“Aboutnt2001”的命令就是:

c://Inetpub//AdminScripts>adsutil SET w3svc/WAMUserPass "Aboutnt2001"

修改成功後,系統會有如下提示:

WAMUserPass: (String) "Aboutnt2001"


(三)同步COM+應用程序所用的IWAM_MYSERVER的密碼

同步COM+應用程序所用的IWAM_MYSERVER的密碼,我們有兩種方式可以選擇:一種是使用組件服務MMC管理單元,另一種是使用IWAM賬號同步腳本synciwam.vbs。


1、使用組件服務MMC管理單元

(1)啓動組件服務管理單元:選擇“開始”->“運行”->“MMC”,啓動管理控制檯,打開“添加/刪除管理單元”對話框,將“組件服務”管理單元添加上。

(2)找到“組件服務”->“計算機”->“我的電腦”->“COM+應用程序”->“Out-Of-Process Pooled Applications”,右擊“Out-Of-Process Pooled Applications”->“屬性”。

(3)切換到“Out-Of-Process Pooled Applications”屬性對話框的“標誌”選項卡。“此應用程序在下列賬戶下運行”選擇中“此用戶”會被選中,用戶名是 “IWAM_MYSERVER”。這些都是缺省的,不必改動。在下面的“密碼”和“確認密碼”文本框內輸入正確的密碼“Aboutnt2001”,確定退出。

(4)系統如果提示“應用程序被一個以上的外部產品創建。你確定要被這些產品支持嗎?”時確定即可。

(5)如果我們在IIS中將其它一些Web的“應用程序保護”設置爲“高(獨立的)”,那麼這個WEB所使用的COM+應用程序的IWAM賬號密碼也需要同步。重複(1)-(4)步,同步其它相應Out of process application的IWAM賬號密碼。


2、使用IWAM賬號同步腳本synciwam.vbs

實際上微軟已經發現IWAM賬號在密碼同步方面存在問題,因此在IIS5的管理腳本中單獨爲IWAM賬號密碼同步編寫了一個腳本 synciwam.vbs,這個腳本位於C://inetpub//adminscripts子目錄下(位置可能會因你安裝IIS5時設置的不同而有所變動)。

synciwam.vbs腳本用法比較簡單:

cscript synciwam.vbs [-v|-h]

“-v”參數表示詳細顯示腳本執行的整個過程(建議使用),“-h”參數用於顯示簡單的幫助信息。


我們要同步IWAM_MYSERVER賬號在COM+應用程序中的密碼,只需要執行“cscript synciwam.vbs -v”即可,如下:

cscript c://inetpub//adminscripts//synciwam.vbs -v

Microsoft (R) Windows Script Host Version 5.6

版權所有(C) Microsoft Corporation 1996-2000。保留所有權利。


WamUserName:IWAM_MYSERVER

WamUserPass:Aboutnt2001

IIS Applications Defined:

Name, AppIsolated, Package ID

w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1}

Root, 2,

IISHelp, 2,

IISAdmin, 2,

IISSamples, 2,

MSADC, 2,

ROOT, 2,

IISAdmin, 2,

IISHelp, 2,

Root, 2,

Root, 2,


Out of process applications defined:

Count: 1

{3D14228D-FBE1-11d0-995D-00C04FD919C1}


Updating Applications:

Name: IIS Out-Of-Process Pooled Applications Key: {3D14228D-FBE1-11D0-995D-00C04FD919C1}


從上面腳本的執行情況可以看出,使用synciwam.vbs腳本要比使用組件服務的方法更全面和快捷。它首先從IIS的metabase數據庫找到 IWAM賬號"IWAM_MYSERVER"並取出對應的密碼“Aboutnt2001”,然後查找所有已定義的IIS Applications和Out of process applications,並逐一同步每一個Out of process applications應用程序的IWAM賬號密碼。

使用synciwam.vbs腳本時,要注意一個問題,那就是在你運行synciwam.vbs之前,必須保證IIS metabase數據庫與Active Directory中的IWAM密碼已經一致。因爲synciwam.vbs腳本是從IIS metabase數據庫而不是從Active Directory取得IWAM賬號的密碼,如果IIS metabase中的密碼不正確,那synciwam.vbs取得的密碼也會不正確,同步操作執行到“Updating Applications”系統就會報80110414錯誤,即“找不到應用程序{3D14228D-FBE1-11D0-995D- 00C04FD919C1}”。

 

 

批處理同步

 

可以用一些BAT來修復這類IE問題的.
好了,到現在爲止,IWAM賬號在Active Directory、IIS metabase數據庫和COM+應用程序三處的密碼已經同步成功,你的ASP程序又可以運行了!

 

 

 

把下面的語句複製出來,粘貼到文本文件中.然後把文本文件保存生擴展名爲.BAT的文件.例如:ie.bat.雙擊打開該BAT文件.一步步確定到最後.問題就能解決了.
IE.BAT

 

rem =====第七頻道批處理開始========

 

rundll32.exe /s advpack.dll /DelNodeRunDLL32 C://WINNT//System32//dacui.dll
rundll32.exe /s advpack.dll /DelNodeRunDLL32 C://WINNT//Catroot//icatalog.mdb
regsvr32 /s setupwbv.dll
regsvr32 /s wininet.dll
regsvr32 /s comcat.dll
regsvr32 /s shdoc401.dll
regsvr32 /s shdoc401.dll /i
regsvr32 /s asctrls.ocx
regsvr32 /s oleaut32.dll
regsvr32 /s shdocvw.dll /I
regsvr32 /s shdocvw.dll
regsvr32 /s browseui.dll
regsvr32 /s browseui.dll /I
regsvr32 /s msrating.dll
regsvr32 /s mlang.dll
regsvr32 /s hlink.dll
regsvr32 /s mshtml.dll
regsvr32 /s mshtmled.dll
regsvr32 /s urlmon.dll
regsvr32 /s plugin.ocx
regsvr32 /s sendmail.dll
regsvr32 /s comctl32.dll /i
regsvr32 /s inetcpl.cpl /i
regsvr32 /s mshtml.dll /i
regsvr32 /s scrobj.dll
regsvr32 /s mmefxe.ocx
regsvr32 /s proctexe.ocx mshta.exe /register
regsvr32 /s corpol.dll
regsvr32 /s jscript.dll
regsvr32 /s msxml.dll
regsvr32 /s imgutil.dll
regsvr32 /s thumbvw.dll
regsvr32 /s cryptext.dll
regsvr32 /s rsabase.dll
regsvr32 /s triedit.dll
regsvr32 /s dhtmled.ocx
regsvr32 /s inseng.dll
regsvr32 /s iesetup.dll /i
regsvr32 /s hmmapi.dll
regsvr32 /s cryptdlg.dll
regsvr32 /s actxprxy.dll
regsvr32 /s dispex.dll
regsvr32 /s occache.dll
regsvr32 /s occache.dll /i
regsvr32 /s iepeers.dll
regsvr32 /s wininet.dll /i
regsvr32 /s urlmon.dll /i
regsvr32 /s digest.dll /i
regsvr32 /s cdfview.dll
regsvr32 /s webcheck.dll
regsvr32 /s mobsync.dll
regsvr32 /s pngfilt.dll
regsvr32 /s licmgr10.dll
regsvr32 /s icmfilter.dll
regsvr32 /s hhctrl.ocx
regsvr32 /s inetcfg.dll
regsvr32 /s trialoc.dll
regsvr32 /s tdc.ocx
regsvr32 /s MSR2C.DLL
regsvr32 /s msident.dll
regsvr32 /s msieftp.dll
regsvr32 /s xmsconf.ocx
regsvr32 /s ils.dll
regsvr32 /s msoeacct.dll
regsvr32 /s wab32.dll
regsvr32 /s wabimp.dll
regsvr32 /s wabfind.dll
regsvr32 /s oemiglib.dll
regsvr32 /s directdb.dll
regsvr32 /s inetcomm.dll
regsvr32 /s msoe.dll
regsvr32 /s oeimport.dll
regsvr32 /s msdxm.ocx
regsvr32 /s dxmasf.dll
regsvr32 /s laprxy.dll
regsvr32 /s l3codecx.ax
regsvr32 /s acelpdec.ax
regsvr32 /s mpg4ds32.ax
regsvr32 /s voxmsdec.ax
regsvr32 /s danim.dll
regsvr32 /s Daxctle.ocx
regsvr32 /s lmrt.dll
regsvr32 /s datime.dll
regsvr32 /s dxtrans.dll
regsvr32 /s dxtmsft.dll
regsvr32 /s vgx.dll
regsvr32 /s WEBPOST.DLL
regsvr32 /s WPWIZDLL.DLL
regsvr32 /s POSTWPP.DLL
regsvr32 /s CRSWPP.DLL
regsvr32 /s FTPWPP.DLL
regsvr32 /s FPWPP.DLL
regsvr32 /s FLUPL.OCX
regsvr32 /s wshom.ocx
regsvr32 /s wshext.dll
regsvr32 /s vbscript.dll
regsvr32 /s scrrun.dll mstinit.exe /setup
regsvr32 /s msnsspc.dll /SspcCreateSspiReg
regsvr32 /s msapsspc.dll /SspcCreateSspiReg

 

rem =====批處理結束========

 

 


另:

 

前面都很順利,但在“開始”->“設置”->“控制面板”->“管理工具”->“組件服務”中,“控制檯根

 

目錄”->“組件服務”->“計算機”-

 

>“我的電腦”->“COM+應用程序”中,右鍵啓動IIS Out-Of-Process Pooled Applications,發現仍然

 

報錯,沒辦法重啓IIS,發現問題現象

 

依舊如故,檢查上面第三個步驟,輸入csript synciwam.vbs -v命令後,返回的腳本執行情況其中最後一

 

段有一個Error的提示。一段英文,具

 

體文字描述未能保存下來,意思理解爲:IIS的原數據庫拒絕訪問。
4、萬般無奈,刪除IIS的組件包,重新建立之,仍然無效。

 

至此又出現問題了。

 

查看應用程序日誌和系統日誌,發現錯誤提示事件ID號依舊爲:10010、36、4205
上述的三個步驟中,前面兩步應該都沒有問題,最後一步好象有點問題。
根據事件ID號,查找相關資料,找出解決辦法如下:
在“開始”->“設置”->“控制面板”->“管理工具”->“計算機管理”中,“系統工具”->“本地用戶

 

和組”->“用戶”裏面,確認IWAM_My

 

server用戶只在GUEST組內,再在“本地用戶和組”->“組”裏面,右鍵點擊Users組屬性,添加進NT

 

AUTHORITY//Authenticated Users和NT

 

AUTHORITY//Interactive兩個用戶成員,確定。

 

重複第三個步驟,即在IIS安裝默認目錄下輸入:c://inetpub//adminscripts> csript synciwam.vbs -v
根據返回的腳本執行情況進行查看,最後那一段的Error已經沒有了,將COM+程序的用戶改回爲IWAM用戶

 

,重新啓動IIS Out-Of-Process

 

Pooled Applications應用程序,沒有再報錯了,再重啓IIS,檢查所有WEB站點服務,故障現象解除!

 

也就是說到了這一步IIS下面的ASP程序才正式恢復重新啓動。
至此,故障現象全部排除!

 

因此,以下幾點需要注意的:
1、事件日誌的空間設置稍微放大一些,默認才512K,根據硬盤空間,適當放大一些,避免出現日誌文件已滿的情況;
2、不要隨便輕易清空事件日誌中的事件記錄,很多故障現象需要從這個裏面下手找原因;
3、所有返回的系統提示信息一定要注意仔細查看;
4、IIS中的應用程序保護應爲中或高,如爲低,則所有ASP頁面均以本地系統權限運行,安全性存在問題。
5、COM+程序的用戶權限和用戶啓動權限很重要,應注意檢查。
6、系統默認組有時有重要作用,不能輕易刪除或修改。
7、系統重要文件(如SAM)不可輕易刪除,應儘可能採取妥善的解決方法。如使用外部程序修改註冊表或SAM表信息以獲得管理員權限。而不要刪除該文件。

 

通過這個問題,發現一些看似複雜和不可思議的問題,只要動腦筋,通過仔細查看、分析,再到網上找到一些有關的文章加以對比——但也切忌死搬硬套——找到自己問題的根結所在,再找出相應的解決辦法,問題最終總會迎刃而解。

 

 

XP的IIS就是爛,“HTTP 500”內部錯誤,經典錯誤。又在網上查找了一下,講這問題的文章多着,不過大多一個樣,收錄有效方法如下。

今天我在新裝的XP上安裝IIS,結果出現如上所述的問題。打開HTML沒有問題,打開ASP文件時就出現“HTTP 500”的錯誤信息。我把IE“顯示友好HTTP錯誤信息”去掉,再打開ASP文件時出現:
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

出現這樣的情況是主要是由於IWAM賬號(在我的計算機即是IWAM_MYSERVER賬號)的密碼錯誤造成了HTTP 500內部錯誤。

排除了一些基本的可能性外,我在網上搜尋了一下解決辦法。最後終於解決了這個問題,在此分享一下。

先啓動MSDTC服務,什麼是MSDTC服務?顯示名稱:Distributed Transaction Coordinator;描述:協調跨多個數據庫、消息隊列、文件系統等資源管理器的事務。如果停止此服務,則不會發生這些事務。如果禁用此服務,顯式依賴此服務的其他服務將無法啓動。
CMD下net start msdtc
結果顯示“Distributed Transaction Coordinator 服務不能啓動”。
解決方法:
把 C:/WINDOWS/system32/dtclog 這個目錄重命名(如果有的話,沒有就直接省去這一步),然後重新建立該目錄。
在命令行下:msdtc -resetlog
再net start msdtc,顯示服務啓動成功了。

然後右鍵我的電腦--管理--本地用戶和組,給“IUSR_機器名”和“IWAM_機器名”兩個用戶設置密碼,要一樣。

接着“開始”→“運行”→輸入“cmd”並確定,執行以下命令:
%SystemDrive%
cd %SystemDrive%/Inetpub/AdminScripts
cscript.exe adsutil.vbs set w3svc/wamuserpass 你設置的密碼
cscript.exe adsutil.vbs set w3svc/anonymoususerpass 你設置的密碼


看一下,行了沒有?如果還不行,那麼執行以下命令:
cscript.exe synciwam.vbs -v

然後重啓IIS,命令:iisreset


到這一步還是不行,最後在CMD下執行以下命令:
%SystemDrive%
cd %SystemRoot%/System32/inetsrv
rundll32 wamreg.dll, CreateIISPackage
regsvr32 asptxn.dll

關閉所有的IE窗口後重新打開再執行,OK

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章