程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 解決采集時出現msxml3.dll 錯誤的方法

解決采集時出現msxml3.dll 錯誤的方法

編輯:關於ASP編程
采集時出現:


msxml3.dll 錯誤 '800c0005' 

系統未找到指定的資源。 

/Admin/Item/Admin_ItemFunction.asp,行166 

我查了資料:

在運用xmlhttp組件編寫程序中,會碰到 "msxml3.dll 錯誤 '800c0005' 系統未找到指定的資源。" 這種錯誤,網上對這種錯誤的產生原因有很多鐘解釋,大體說是因為防火牆或UDP站口權限造成了,也說了相應的解決辦法。其它有時候也未必。其實錯誤的描述中就說出了主要的原因 "系統未找到指定的資源" 。這種錯誤都是出現在調用了 xmlhttp 組件的 Open方法,接著再用Send方法後造成的。當open方法的的 url 參數無法訪問時,就會造成 8000005 錯誤。並且一旦產生這種錯誤,就會導致應用程序終止,無法繼續操作。大多說的程序是這樣寫的:
Function functionName(pararm ...)
Dim Http
Set Http=Server.CreateObject("MSXML2.XMLHTTP.4.0") 
With Http
.open "GET",HttpUrl,False
.Send
End With 
If Http.Readystate<>4 then 
Set Http=Nothing 
......
Exit function
End if
End Function 
大多數的程序都是運用xmlhttp的 Readystate 屬性判斷從服務器的返回狀態。其實這樣未必適合,很多時候用ReadyState 屬性判斷並不能真正檢測到程序流程中的錯誤。當遇到錯誤的時候,仍然會致使程序終止。其實修改一下上面的代碼,完全可以實現跳過程序執行過程中遇到的錯誤,使程序繼續運行。修改代碼如下:
Function functionName(pararm ...)
Dim Http
Set Http=Server.CreateObject("MSXML2.XMLHTTP.4.0") 
With Http
.open "GET",HttpUrl,False
.Send
End With 
On Error Resume Next 
If Http.Status<>200 then 
Set Http=Nothing 
......
Exit function
End if
End Function 
Send 方法產生錯誤的時候,ReadyState的值或許為4,但Status的返回值就一定不是200的。呵呵,我經過多次跟蹤ReadyState和Status的值得到以前結果。可能會有差錯,目前我還沒有發現。
希望以上程序解決方案能夠幫到你!!如果朋友你有更好的解決方法,請一定告訴我喲。
我是以MSXML2.XMLHTTP.4.0為例說明的程序,也適合其它版本的XMLHTTP組件。想檢查的你系統中已經安裝了哪些版本的XMLHTTP組件,請到注冊表的 HKEY_CLASSES_ROOT 下查找。


根據以上資料,我只做了如下修改,便可以正常采集,無需進行什麼安裝組件、重起、關閉防火牆等操作:

/Admin/Item/Admin_ItemFunction.asp,行166 附近:

Http.Send()
If Http.Readystate<>4 then

改為

On Error Resume Next 
Http.Send()
If Http.Status<>200 then
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved