知道了導(dǎo)致http 500內(nèi)部錯(cuò)誤的原因,解決起來(lái)就比較簡(jiǎn)單了,那就是人工同步iwam賬號(hào)在active directory、iis metabase數(shù)據(jù)庫(kù)和com+應(yīng)用程序中的密碼。
具體操作分三步,均需要以管理員身份登錄計(jì)算機(jī)以提供足夠的操作權(quán)限(iwam賬號(hào)以iwam_myserver為例)。
(一)更改active directory中iwam_myserver賬號(hào)的密碼
因iwam賬號(hào)的密碼由系統(tǒng)控制,隨機(jī)產(chǎn)生,我們并不知道是什么,為完成下面兩步的密碼同步工作,我們必須將iwam賬號(hào)的密碼設(shè)置為一個(gè)我們知道的值。
1、選擇"開始"->"程序"->"管理工具"->"active directory用戶和計(jì)算機(jī)",啟動(dòng)"active directory用戶和計(jì)算機(jī)"管理單元。
2、單擊"user",選中右面的"iwam_myserver",右擊選擇"重設(shè)密碼(t)...",在跳出的重設(shè)密碼對(duì)方框中給iwam_myserver設(shè)置新的密碼,這兒我們?cè)O(shè)置成"aboutnt2001"(沒有引號(hào)的),確定,等待密碼修改成功。
(二)同步iis metabase中iwam_myserver賬號(hào)的密碼
可能因?yàn)檫@項(xiàng)改動(dòng)太敏感和重要,微軟并沒有為我們修改iis metabase中iwam_myserver賬號(hào)密碼提供一個(gè)顯式的用戶接口,只隨iis5提供了一個(gè)管理腳本adsutil.vbs,這個(gè)腳本位于c:inetpubadminscripts子目錄下(位置可能會(huì)因你安裝iis5時(shí)設(shè)置的不同而有所變動(dòng))。
adsutil.vbs腳本功能強(qiáng)大,參數(shù)非常多且用法復(fù)雜,這里只提供使用這個(gè)腳本修改iwam_myserver賬號(hào)密碼的方法:
adsutil set w3svc/wamuserpass password
"password"參數(shù)就是要設(shè)置的iwam賬號(hào)的新的密碼。因此我們將iis metabase中iwam_myserver賬號(hào)的密碼修改為"aboutnt2001"的命令就是:
c:inetpubadminscripts>adsutil set w3svc/wamuserpass "aboutnt2001"
修改成功后,系統(tǒng)會(huì)有如下提示:
wamuserpass: (string) "aboutnt2001"
(三)同步com+應(yīng)用程序所用的iwam_myserver的密碼
同步com+應(yīng)用程序所用的iwam_myserver的密碼,我們有兩種方式可以選擇:一種是使用組件服務(wù)mmc管理單元,另一種是使用iwam賬號(hào)同步腳本synciwam.vbs。
1、使用組件服務(wù)mmc管理單元
(1)啟動(dòng)組件服務(wù)管理單元:選擇"開始"->"運(yùn)行"->"mmc",啟動(dòng)管理控制臺(tái),打開"添加/刪除管理單元"對(duì)話框,將"組件服務(wù)"管理單元添加上。
(2)找到"組件服務(wù)"->"計(jì)算機(jī)"->"我的電腦"->"com+應(yīng)用程序"->"out-of-process pooled applications",右擊"out-of-process pooled applications"->"屬性"。
(3)切換到"out-of-process pooled applications"屬性對(duì)話框的"標(biāo)志"選項(xiàng)卡。"此應(yīng)用程序在下列賬戶下運(yùn)行"選擇中"此用戶"會(huì)被選中,用戶名是"iwam_myserver"。這些都是缺省的,不必改動(dòng)。在下面的"密碼"和"確認(rèn)密碼"文本框內(nèi)輸入正確的密碼"aboutnt2001",確定退出。
(4)系統(tǒng)如果提示"應(yīng)用程序被一個(gè)以上的外部產(chǎn)品創(chuàng)建。你確定要被這些產(chǎn)品支持嗎?"時(shí)確定即可。
(5)如果我們?cè)趇is中將其它一些web的"應(yīng)用程序保護(hù)"設(shè)置為"高(獨(dú)立的)",那么這個(gè)web所使用的com+應(yīng)用程序的iwam賬號(hào)密碼也需要同步。重復(fù)(1)-(4)步,同步其它相應(yīng)out of process application的iwam賬號(hào)密碼。
2、使用iwam賬號(hào)同步腳本synciwam.vbs
實(shí)際上微軟已經(jīng)發(fā)現(xiàn)iwam賬號(hào)在密碼同步方面存在問(wèn)題,因此在iis5的管理腳本中單獨(dú)為iwam賬號(hào)密碼同步編寫了一個(gè)腳本synciwam.vbs,這個(gè)腳本位于c:inetpubadminscripts子目錄下(位置可能會(huì)因你安裝iis5時(shí)設(shè)置的不同而有所變動(dòng))。
synciwam.vbs腳本用法比較簡(jiǎn)單:
cscript synciwam.vbs [-v -h]
"-v"參數(shù)表示詳細(xì)顯示腳本執(zhí)行的整個(gè)過(guò)程(建議使用),"-h"參數(shù)用于顯示簡(jiǎn)單的幫助信息。
我們要同步iwam_myserver賬號(hào)在com+應(yīng)用程序中的密碼,只需要執(zhí)行"cscript synciwam.vbs -v"即可,如下:
cscript c:inetpubadminscriptssynciwam.vbs -v
microsoft (r) windows script host version 5.6
版權(quán)所有(c) microsoft corporation 1996-2000。保留所有權(quán)利。
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}
從上面腳本的執(zhí)行情況可以看出,使用synciwam.vbs腳本要比使用組件服務(wù)的方法更全面和快捷。它首先從iis的metabase數(shù)據(jù)庫(kù)找到iwam賬號(hào)"iwam_myserver"并取出對(duì)應(yīng)的密碼"aboutnt2001",然后查找所有已定義的iis applications和out of process applications,并逐一同步每一個(gè)out of process applications應(yīng)用程序的iwam賬號(hào)密碼。
使用synciwam.vbs腳本時(shí),要注意一個(gè)問(wèn)題,那就是在你運(yùn)行synciwam.vbs之前,必須保證iis metabase數(shù)據(jù)庫(kù)與active directory中的iwam密碼已經(jīng)一致。因?yàn)閟ynciwam.vbs腳本是從iis metabase數(shù)據(jù)庫(kù)而不是從active directory取得iwam賬號(hào)的密碼,如果iis metabase中的密碼不正確,那synciwam.vbs取得的密碼也會(huì)不正確,同步操作執(zhí)行到"updating applications"系統(tǒng)就會(huì)報(bào)80110414錯(cuò)誤,即"找不到應(yīng)用程序 3d14228d-fbe1-11d0-995d-00c04fd919c1}"。
好了,到現(xiàn)在為止,iwam賬號(hào)在active directory、iis metabase數(shù)據(jù)庫(kù)和com+應(yīng)用程序三處的密碼已經(jīng)同步成功,你的asp程序又可以運(yùn)行了!
修改成功后,系統(tǒng)會(huì)有如下提示:
---------------------------------------------------
經(jīng)過(guò)測(cè)試,顯示應(yīng)該是
wamuserpass: (string) "*******"


