我遇到了这个错误:
The remote name could not be resolved: 'russgates85-001-site1.smarterasp.net'
当我要求使用Web客户端读取html内容时,它会给我错误。 以下是我的代码。
string strHTML = string.Empty;
WebClient myClient = new WebClient();
UTF8Encoding utf8 = new UTF8Encoding();
byte[] requestHTML;
string pdfFileName = "outputpdf_" + DateTime.Now.Ticks + ".pdf";
string webUrl = Request.Url.Scheme + "://" + Request.Url.Host + (Request.Url.Port != 80 ? ":" + Request.Url.Port : "");
requestHTML = myClient.DownloadData("http://russgates85-001-site1.smarterasp.net/adminsec/images/printinvoice.aspx?iid=2");
// OR
requestHTML = myClient.DownloadData(webUrl + "?iid=3");
当我在本地代码/环境中放置相同的网址时,它可以正常工作。
答案 0 :(得分:7)
您运行代码的其他位置很可能无法访问该远程位置。即在许多企业环境服务器上不允许外部Internet访问。 您可能想尝试ping / traceroute {/ 1}} 来自其他服务器,如果没有访问权限 - 配置路由器/防火墙(开放端口等)或使用代理
答案 1 :(得分:5)
我遇到了这个并且需要使用远程服务器的IP而不是DNS名称。 Production试图使用其DNS名称访问远程服务器,这在防火墙的那一侧是不可行的。
答案 2 :(得分:1)
我遇到了同样的问题,并通过为webclient设置代理来解决问题
明确地喜欢
webClient.Proxy = new WebProxy("myproxy.com:portnumber");
byte[] bytearr= webClient.DownloadData(acsMetadataEndpointUrlWithRealm);
答案 3 :(得分:0)
默认情况下,它将使用系统代理。
要解决此问题,请强制在web.config或.cs api webclient中设置代理。
代码修复应类似于以下内容,位于web.config中System.net下的部分
<defaultProxy>
<proxy proxyaddress="http://0.000.000.000:00" bypassonlocal="True" usesystemdefault="False" autoDetect="False" />
</defaultProxy>