出現(xiàn)msxml3.dll 錯(cuò)誤 '80070005'錯(cuò)誤,拒絕訪(fǎng)問(wèn)錯(cuò)誤
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
msxml3.dll 錯(cuò)誤 80070005拒絕訪(fǎng)問(wèn)。 解決辦法: 賦予程序所在文件夾 internet 來(lái)賓帳號(hào)(IUSR_WEB)可寫(xiě)。 昨天在采集某一個(gè)網(wǎng)站的時(shí)候,采集程序出錯(cuò)了。 是自寫(xiě)的采集程序。 經(jīng)過(guò)搜索以后,查到一些沒(méi)有用的結(jié)果,后來(lái)發(fā)現(xiàn),用Msxml2.ServerXMLHTTP替換掉Msxml2.XMLHTTP,問(wèn)題成功解決。 以下是分析排錯(cuò)過(guò)程。 老是采集一段時(shí)間就掛了,指定資源下載失敗,或者拒絕訪(fǎng)問(wèn)。 后來(lái)直接全部是拒絕訪(fǎng)問(wèn)。 一開(kāi)始,認(rèn)為,對(duì)方服務(wù)器做了防采集設(shè)置,比如有時(shí)間限制之類(lèi)的。 于是更改程序,原先是直接獲取列表頁(yè),然后持續(xù)循環(huán)獲得文章列表。改了采集文件結(jié)構(gòu), 原來(lái)是就一個(gè)文件,類(lèi),數(shù)據(jù)庫(kù)連接,數(shù)據(jù)處理全部在一個(gè)文件里,再采集某一篇文章的時(shí)候,后天加了一個(gè)時(shí)間循環(huán)。等待5秒的。 sTime=Timer() dTime=Timer()-sTime do while dTime < 5 dTime=Timer()-sTime loop 確實(shí)是能等待5秒鐘,但是很快就發(fā)現(xiàn),這個(gè)循環(huán)太過(guò)消耗CPU資源,一到這個(gè)循環(huán),CPU占用率持續(xù)100%,于是馬上放棄這個(gè)方案。 另做了一個(gè)文件。只根據(jù)文章URL抓取文章的相關(guān)內(nèi)容并寫(xiě)入數(shù)據(jù)庫(kù),寫(xiě)入完畢后輸出自動(dòng)跳轉(zhuǎn)代碼。 核心思想就是用了<meta http-equiv="refresh" content="5;url=someurl.asp"> 這是一個(gè)定時(shí)跳轉(zhuǎn)的代碼,相信大家都很熟悉。 我的原理做法就是,用一開(kāi)始的文件,抓取所有的文章連接地址,以及相關(guān)導(dǎo)航代碼,保存到數(shù)據(jù)庫(kù)中。 然后用新做的抓取文章內(nèi)容的程序,讀取數(shù)據(jù)庫(kù)記錄,逐條進(jìn)行采集。 數(shù)據(jù)庫(kù)記錄中有一個(gè)flag標(biāo)記,tinyint類(lèi)型,默認(rèn)是0,采集成功更新為1,失敗更新為2 這樣,每次從數(shù)據(jù)庫(kù)中讀取一條未采集的數(shù)據(jù),也就是讀取flag=0的數(shù)據(jù),進(jìn)行操作。操作完畢等待5秒跳轉(zhuǎn)到自身。 想法跟思路是很好的。文章URL數(shù)據(jù)庫(kù)也采集準(zhǔn)備好了,一上采集文章具體內(nèi)容,又出錯(cuò)了。一直是msxml3.dll 錯(cuò)誤 '80070005' 拒絕訪(fǎng)問(wèn)的錯(cuò)誤。 那個(gè)郁悶,想開(kāi)一晚上機(jī)器,自動(dòng)采集,破滅。 今天早上來(lái)搜索查詢(xún)資料,查詢(xún)到的絕大多數(shù)都是無(wú)用信息。 基本上都是說(shuō)權(quán)限問(wèn)題。 msxml3.dll 錯(cuò)誤 '80070005' 拒絕訪(fǎng)問(wèn)。 解決辦法: 賦予程序所在文件夾 internet 來(lái)賓帳號(hào)(IUSR_WEB)可寫(xiě)。 做法: 選擇cachefile-屬性-安全-添加(IUSR_WEB)-寫(xiě)入 都是這么說(shuō)的。莫名其妙的,我的是FAT32的不存在NTFS格式的那種安全權(quán)限問(wèn)題,IIS設(shè)置也正常, 我的問(wèn)題是采集一部分就拒絕訪(fǎng)問(wèn)。肯定不是這個(gè)問(wèn)題。 繼續(xù)搜索,找到另一個(gè)方案說(shuō)是,用Msxml2.XMLHTTP替換掉Microsoft.XMLHTTP,我本來(lái)用的就是Msxml2.XMLHTTP的 繼續(xù)搜索。找到最終解決方案應(yīng)該是用Msxml2.ServerXMLHTTP 先前也搜到這個(gè)結(jié)果,由于大意,沒(méi)有及時(shí)注意到,以下是搜索過(guò)程找到的有用的相關(guān)資料。 代碼如下: PostUrl=http://www.xxx.com/ Server.ScriptTimeOut=20 Set oXMLHttp = createObject("Microsoft.XMLHTTP") Call oXMLHttp.Open("get", PostUrl, false) Call oXMLHttp.Send("") sHtmlStr = oXMLHttp.responseBody Set oXMLHttp = nothing 初步判定可能是打開(kāi)的頁(yè)面有跳轉(zhuǎn)的原因,解決辦法是用 MSXML2.ServerXMLHTTP 替換掉 Microsoft.XMLHTTP 即可解決。 另外在CSDN上找到這么一段代碼 ServerURL=PostUrl Set Mail1 = Server.CreateObject("CDO.Message") Mail1.CreateMHTMLBody ServerURL,31 AA=Mail1.HTMLBody Set Mail1 = Nothing Response.Write AA 試了一下,也可以用,拷過(guò)來(lái)收藏 代碼如下: <% ' 定義變量 Dim objXmlHttp Dim strHTML '這是Msxml3.0中的一個(gè)穩(wěn)定版本. '使用Msxml2.ServerXMLHTTP,不使用Msxml2.XMLHTTP Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") ' 如果你發(fā)現(xiàn)以下錯(cuò)誤 ' msxml3.dll error '80070005' ' 存取被拒絕. ' 可能是上網(wǎng)時(shí)使用了代理產(chǎn)生了錯(cuò)誤 ' 使用 proxycfg.exe 工具. : ' ' proxycfg -d ' 檢查是否采用了代理上網(wǎng) ' 同時(shí)可以參看這個(gè)帖子: http://www.asp101.com/forum/display_message.asp?mid=51841 ' ' 這個(gè)版本太舊且不穩(wěn)定 'Set objXmlHttp = Server.CreateObject("Msxml2.XMLHTTP") ' 現(xiàn)在我們開(kāi)始發(fā)送請(qǐng)求. ' 套用微軟的話(huà)來(lái)講: 初始化一個(gè)請(qǐng)求,并且指定該請(qǐng)求的方法(get,post等等), ' URL, 和權(quán)限驗(yàn)證信息(用戶(hù)名,密碼,等等)。 ' 格式: ' .open(bstrMethod, bstrUrl, bAsync, bstrUser, bstrPassword) 'objXmlHttp.open "GET", "http://www.yahoo.com", False objXmlHttp.open "GET", "http://www.yahoo.com", False ' 以直接的方式發(fā)送請(qǐng)求出去. objXmlHttp.send ' 打印返回狀態(tài): Response.Write "Status: " & objXmlHttp.status & " " _ & objXmlHttp.statusText & "<br />" ' 獲取響應(yīng)返回的文本. ' 這個(gè)對(duì)象本身是用來(lái)操作XML的,所以具備以下屬性: ' responseBody, responseStream, 和 responseXML. ' 但是我們現(xiàn)在只需要文本信息 strHTML = objXmlHttp.responseText ' 但這個(gè)對(duì)象實(shí)例不再使用時(shí),需要清除這個(gè)對(duì)象實(shí)例. Set objXmlHttp = Nothing ' 現(xiàn)在我們要做的就是顯示我們獲取到的HTML. ' 首先看瀏覽器解釋的效果 ' 然后顯示其源碼 ' 下面的類(lèi)似<h1>s 和 <table>s只是為了展現(xiàn)獲取到的內(nèi)容,本身不屬于獲取的內(nèi)容. %> <h1>Here's The Page:</h1> <table border="1" bgcolor="#FFFFFF"> <tr><td> <%= strHTML %> </td></tr> </table> <br /> <h1>Here's The Code:</h1> <table border="1" bgcolor="#FFFFFF"> <tr><td> <pre> <%= Server.HTMLEncode(strHTML) %> </pre> </td></tr> </table> 該文章在 2012/5/24 14:12:06 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |