问题
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 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.
回答1:
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.
回答2:
@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
回答3:
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.
回答4:
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).
回答5:
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.
回答6:
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.
回答7:
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
来源:https://stackoverflow.com/questions/4355896/msxml3-dll-80072efd-and-800c0005-errors-executing-serverxmlhttp-send-in-classic