M$的Internet Information Server(IIS)是很多朋友都用過Web伺服器,幾乎用Windows OS的網站主機都是用它來搭建Web Site,用以提供ASP動態網頁面的服務。
用到它的朋友可能會碰到這樣一種情況,就是某天IIS突然不能訪問ASP頁而只能訪問HTML頁面了,當訪問ASP頁面時報HTTP500錯誤,讓人心煩不已。今天我總算在網上找到瞭解決的辦法,並如法炮製一番就搞定它了。
出錯原因:
其實該錯誤是因為IIS在某些時候同步IIS進程的啟動帳號IWAM_$NAME ( 該NAME一般為OS的NETBIOS NAME ) 造成的。IIS的啟動帳號預設為IWAM_$NAME,該帳號的密碼相信用過IIS的人沒有多少去關心的,因為它由系統自身同步,但是WINDOWS有太多不盡如人意的地方,該同步過程有時會發生錯誤造成同步失敗,導致IWAM_$NAME帳號在啟動Internet 資訊服務進程之外的應用程式的時候驗證失敗,Asp頁面因為沒有相關的解析進程支援而無法訪問,出現HTTP 500錯誤。
解決辦法:
預設安裝下C:\Inetpub\AdminScripts目錄下有個adsutil.vbs檔案,這是IIS內建的修改IIS配置的指令檔,功能不可小視。這裡用到以下功能:
擷取 IUSR 帳戶密碼
cscript.exe adsutil.vbs get w3svc/anonymoususerpass
擷取 IWAM 帳戶密碼
cscript.exe adsutil.vbs get w3svc/wamuserpass
設定 IUSR 帳戶密碼
cscript.exe adsutil.vbs set w3svc/anonymoususerpass "password"
設定 IWAM 帳戶密碼
cscript.exe adsutil.vbs set w3svc/wamuserpass "password"
注意:adsutil.vbs中的IsSecureProperty變數值為TRUE時,返回星型密碼,為FALSE時顯示純文字密碼。可手動更改。
具體步驟就是先在使用者管理員中設定密碼,然後再用指令碼設定IIS密碼,以實現同步。也可以先用指令碼獲得密碼,再將密碼設定到使用者。依此方法一般可以實現手動同步,恢複ASP頁面訪問。
自動同步指令碼:
net user IWAM_%USERDOMAIN% network
Cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/wamuserpass "network"
@IF %errorlevel% EQU 0 Echo.&Echo.&Echo 啦啦啦啦啦啦啦啦啦 使用者IWAM_%USERDOMAIN%的密碼在IIS設定資料庫中同步成功!&Echo.
@Cscript.exe C:\Inetpub\AdminScripts\synciwam.vbs -v
@IF %errorlevel% EQU 0 Echo.&Echo.&Echo 啦啦啦啦啦啦啦啦啦 使用者IWAM_%USERDOMAIN%的密碼在Microsoft Transaction Server或元件服務中同步成功!&Echo.
@CMD /k