【问题标题】:MSXML3.dll 80072efd and 800c0005 errors executing ServerXMLHTTP.send in classic ASP on Windows 7在 Windows 7 上的经典 ASP 中执行 ServerXMLHTTP.send 时出现 MSXML3.dll 80072efd 和 800c0005 错误
【发布时间】:2010-12-04 21:22:01
【问题描述】:

我有一个经典的 ASP 页面,我试图在 Windows 7 上的 IIS 上进行调试。该页面在另一台运行 Windows Server 2003 的机器上运行良好,该机器在不同的网络上运行。此外,在 Windows 7 机器上,我可以在浏览器中成功打开相关 URL。

执行 ServerXMLHTTP.send() 时页面失败,错误:

msxml3.dll error '80072efd'
A connection with the server could not be established 

有问题的代码如下所示(最后一行失败):

set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP")
xmlHTTP.open "get", "http://stackoverflow.com", False
xmlHTTP.send

我四处搜索,最有用的建议是使用 NetSh 为 winHTTP 设置代理。有问题的机器位于使用代理服务器的网络上。但是,即使在设置代理并重新启动后,我仍然会遇到同样的错误。

变化

set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP")

set xmlHTTP = server.CreateObject("MSXML2.XMLHTTP")

产生一个稍微不同的错误:

msxml3.dll error '800c0005'
The system cannot locate the resource specified.

我还尝试安装 MSXML4 SP3 并使用以下方法显式创建 v4 对象:

set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP.4.0")

除了消息中的 msxml4.dll 之外,我仍然收到相同的错误。

最后我尝试关闭我的 Forefront TMG 代理客户端,告诉我的浏览器不要使用代理,并使用 netsh 为 winHTTP 重置代理。即使浏览器仍然可以访问互联网,仍然会出现同样的错误。

根据我的发现,我认为这一定是这台特定机器通过它所在的特定网络连接的问题。但是,我不知道问题是什么。任何建议都非常感谢。

【问题讨论】:

    标签: iis-7 asp-classic msxml


    【解决方案1】:

    为我的情况解决了这个问题,但还有很多其他原因可能会导致您收到此错误。对我来说简短的回答是:检查 Classic .Net AppPool 运行的用户,并确保您的网络允许他们访问互联网。

    我下载了 Microsoft 网络监视器并查看了故障期间的流量。唯一可能相关的流量都流向了我们的代理服务器,并且包括失败的身份验证尝试。

    然后我检查了 IIS 中的应用程序池,果然 Classic .Net AppPool 设置为使用代理无法识别的本地计算机帐户。将要使用的帐户更改为域帐户修复了该错误。

    【讨论】:

      【解决方案2】:

      @Dan:你尝试过使用 stackoverflow.com 的 IP 吗?

      set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP")
      xmlHTTP.open "get", "http://64.34.119.12/", False
      xmlHTTP.send
      
      response.write xmlHTTP.responseText
      

      【讨论】:

      • @Dan: 检查w3wp.exe 是否在任务管理器中的进程下运行...如果没有,请重新启动 IIS 并运行两个代码示例(域和 IP)以查看它们是否工作.
      • 再次感谢,我现在实际上已经解决了这个问题,但由于某种原因,我必须等待 4 小时才能接受我自己的答案...
      【解决方案3】:

      如果由于密码不兼容而无法协商 SSL 会话,则在使用 HTTPS 时也会发生此错误。

      SSL Labs's SSL Test 可以帮助确定哪些是兼容的。

      我知道最初的问题是关于非 SSL 连接,但我把它放在那里,因为这是在搜索错误消息时谷歌上的第一个命中。

      【讨论】:

      • @JB King,这不是仅链接的答案。正如我所解释的,问题是由于密码不兼容造成的。提供用于测试您的密码兼容性的网站的链接是出于礼貌,而不是作为解决方案。
      【解决方案4】:

      我发现当我的脚本中出现 800C005 错误时,与我正在连接的肥皂服务器的连接会产生影响。

      必须在我的 windows HOSTS 表中定义多个条目才能运行脚本而不会出现错误。

      在添加有效的 www.mysoapserverurl.com 时,放入给出错误的 mysoapserverurl.com,只留下带有 www 的 URL。脚本再次给出错误。 (总是 msxml3.dll 错误)。

      【讨论】:

        【解决方案5】:

        这适用于使用 Microsoft.XmlHttp 解决我在 vbs 文件中具有相同错误号的问题。

        尝试在 http.send 末尾添加空双引号

        http = CreateObject("Microsoft.XmlHttp")
        http.open "GET", strURL, False
        http.send ""
        

        为我工作。祝你好运。

        【讨论】:

          【解决方案6】:

          我在谷歌上找到的唯一合理的答案就是这个。希望对你有帮助。

          如何阅读远程网页的内容? [链接已删除]

          您可能会收到的常见错误:

          >     msxml3.dll error '80072efd'  
          >     A connection with the server could not be established
          

          确保网址确实是 可达。你可能已经拼写了 域名错误,或网站可能 居然下来了。使用一个测试 从那台机器浏览器,或者干脆 运行 tracert / ping。注意 ping 不会总是返回结果, 因为许多网站阻止了所有这些 流量(主要是帮助消除DOS 攻击)。但是,ping 应该在 至少让你知道IP地址, 这意味着域名是 通过DNS正确解析。 否则,可能是您的 DNS 服务器正在阻止连接。

          【讨论】:

          • 感谢您的回答,不幸的是,我还找到了该页面,并且可以在浏览器中查看 URL :(域名,我没看到。
          【解决方案7】:

          如果您的网址长度超过 255 个字符,则可能会发生这种情况。一些 XML 不允许发布超过 255 个字符的方式

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-10-28
            • 1970-01-01
            • 2015-12-27
            • 2019-01-16
            • 1970-01-01
            • 2011-06-26
            • 2011-02-24
            相关资源
            最近更新 更多