Xdocument.load 错误无法连接到远程服务器
Xdocument.load error Unable to connect to remote server
我有以下问题
Dim strPath = String.Concat("http://www.intraneturl.com/xml")
Dim EmpXDoc As New XDocument
EmpXDoc = XDocument.Load(strPath)
以上代码在开发服务器(连接到内部网)中运行良好,但在将其托管到生产服务器(使用代理连接到内部网和使用 public ip 连接到互联网)之后,以上代码给出了 "Unable to connect to remote server" 错误。但是,如果我尝试通过客户端 javascript 解析 xml 网站,如下所示:
var parser = new ActiveXObject("microsoft.xmldom");
parser.load("http://www.intraneturl.com/xml");
nodes = parser.documentElement.childNodes;
它运行完美。
这意味着解析器在客户端 javascript 中工作,但在 aspx 页面中不工作(在主机之后)。有人会指导我吗?
嗯,在一种情况下解析发生在客户端上 (JavaScript),它可能没有互联网连接,所以它可以成功解析内网url.
其他代码在服务器上运行,它 - 内部和外部都连接 - 可能认为内部网 url 是外部网 url 并且因此可能无法解决。
您可以尝试在 URL 中使用 IP 地址来阻止 DNS 请求。
如果有代理,请在加载文档时设置代理
WebProxy wp = new WebProxy(ProxyAddress);
wp.Credentials = new NetworkCredential(ProxyUsername, ProxyPassword);
WebClient wc = new WebClient(){ Proxy =wp};
MemoryStream ms = new MemoryStream(wc.DownloadData("http://www.intraneturl.com/xml"));
XmlTextReader rdr = new XmlTextReader(ms);
EmpXDoc = XDocument.Load(rdr);
我有以下问题
Dim strPath = String.Concat("http://www.intraneturl.com/xml")
Dim EmpXDoc As New XDocument
EmpXDoc = XDocument.Load(strPath)
以上代码在开发服务器(连接到内部网)中运行良好,但在将其托管到生产服务器(使用代理连接到内部网和使用 public ip 连接到互联网)之后,以上代码给出了 "Unable to connect to remote server" 错误。但是,如果我尝试通过客户端 javascript 解析 xml 网站,如下所示:
var parser = new ActiveXObject("microsoft.xmldom");
parser.load("http://www.intraneturl.com/xml");
nodes = parser.documentElement.childNodes;
它运行完美。
这意味着解析器在客户端 javascript 中工作,但在 aspx 页面中不工作(在主机之后)。有人会指导我吗?
嗯,在一种情况下解析发生在客户端上 (JavaScript),它可能没有互联网连接,所以它可以成功解析内网url.
其他代码在服务器上运行,它 - 内部和外部都连接 - 可能认为内部网 url 是外部网 url 并且因此可能无法解决。
您可以尝试在 URL 中使用 IP 地址来阻止 DNS 请求。
如果有代理,请在加载文档时设置代理
WebProxy wp = new WebProxy(ProxyAddress);
wp.Credentials = new NetworkCredential(ProxyUsername, ProxyPassword);
WebClient wc = new WebClient(){ Proxy =wp};
MemoryStream ms = new MemoryStream(wc.DownloadData("http://www.intraneturl.com/xml"));
XmlTextReader rdr = new XmlTextReader(ms);
EmpXDoc = XDocument.Load(rdr);