在Windows 7上的经典ASP中执行ServerXMLHTTP.send时出现MSXML3.dll 80072efd和800c0005错误

Dan*_*Dan 6 iis-7 msxml asp-classic

我有一个经典的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 
Run Code Online (Sandbox Code Playgroud)

有问题的代码看起来像这样(最后一行失败):

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

我一直在搜索,最有帮助的建议是使用NetSh为winHTTP设置代理.有问题的机器在使用代理服务器的网络上.但是,即使在设置代理并重新启动后,我仍然会得到相同的错误.

更改

set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP")
Run Code Online (Sandbox Code Playgroud)

set xmlHTTP = server.CreateObject("MSXML2.XMLHTTP")
Run Code Online (Sandbox Code Playgroud)

产生略有不同的错误:

msxml3.dll error '800c0005'
The system cannot locate the resource specified.
Run Code Online (Sandbox Code Playgroud)

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

set xmlHTTP = server.CreateObject("MSXML2.ServerXMLHTTP.4.0")
Run Code Online (Sandbox Code Playgroud)

我仍然得到相同的错误,除了消息中的msxml4.dll.

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

从我发现的情况来看,我认为这必须是这个特定机器通过它所在的特定网络连接的问题.但是,我不知道问题是什么.任何建议都感激不尽.

Dan*_*Dan 5

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

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

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