开发者

MSXML3.dll 80072efd and 800c0005 errors executing ServerXMLHTTP.send in classic ASP on Windows 7

I have a classic ASP page that I am trying to debug on IIS on Windows 7. The page works fine on another machine running Windows Server 2003 on a different network. Also, on the Windows 7 machine I can successfully open the URL in question in a browser.

The page fails when executing ServerXMLHTTP.send() with the error:

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

The code in question looks like this (the last line is failing):

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

I have searched around and the most helpful looking suggestion was to use NetSh to set a proxy for winHTTP. The machine with problems is on a network which does use a proxy server. However, even after setting the proxy and rebooting I still get the same error.

Changing

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

to

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

yields a slightly different error:

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

I've also tried installing MSXML4 SP3 and explicitly creating a v4 object using:

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

I still get the same errors except with msxml4.dll in the message.

Finally I tried turning off my Forefront TMG proxy client, telling my browser not to use a proxy, and using netsh to reset the proxy for winHTTP. Still the same errors even though the browser can still access the internet.

From 开发者_JAVA百科what I've found I reckon this must be an issue with connectivity from this particular machine over the particular network it is on. However, I have no idea what the problem is. Any suggestions gratefully received.


Solved it for my case, there are plenty of other reasons you might get this error though. The short answer for me was: Check the user the Classic .Net AppPool is running as and make sure your network allows them internet access.

I downloaded Microsoft Network Monitor and looked at the traffic during a failure. The only traffic that might have been related was all going to our proxy server and consisted of a failed attempt to authenticate.

I then checked the app pools in IIS and sure enough the Classic .Net AppPool was set to use a local machine account that wasn't being recognised by the proxy. Changing the account to use to a domain account fixed the error.


This error can also occur when using HTTPS if the SSL session cannot be negotiated due to incompatible ciphers.

SSL Labs's SSL Test can help determine which are compatible.

I know the original question was about a non-SSL connection, but I'm putting this out there as this is the first hit on Google when searching for the error message.


@Dan: Did you try with the IP for stackoverflow.com?

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

response.write xmlHTTP.responseText


I found out that when getting the 800C005 error in my script the connectivity to the soap server I was connecting to makes a difference.

Had to define multiple entries in my windows HOSTS table to run the script without the error.

Put in mysoapserverurl.com that gave an error, when adding www.mysoapserverurl.com that works, leaving only the URL with www. the script gives the error again. (always msxml3.dll error).


This worked for fixing my issue with same error number in vbs file using Microsoft.XmlHttp.

Try adding empty double quotes at end of http.send

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

Worked for me. Good luck to you.


The only reasonable answer I've found on google was this one. I hope it helps.

How do I read the contents of a remote web page? [link removed]

A common error you might receive:

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

Make sure that the URL is actually reachable. You may have spelled the domain name wrong, or the site may actually be down. Test using a browser from that machine, or simply running a tracert / ping. Note that ping won't always return results, because many sites block all such traffic (mainly to help eliminate DOS attacks). However, ping should at least let you know the IP address, which means that the domain name was resolved correctly through DNS. Otherwise, it might be that your DNS server is preventing connection.


It could happen if your URL is more than 255 characters in length. Some how XML is not allowing to post more than 255 characters

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜