当前位置: 首页 > 图文教程 > 网络编程 > ASP > 解决采集时出现msxml3.dll 错误的方法

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

ASP 中的 解决采集时出现msxml3.dll 错误的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 144 ::
收藏到网摘: n/a

采集时出现:

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