【问题标题】:The remote name could not be resolved - webclient无法解析远程名称 - webclient
【发布时间】:2013-05-13 15:26:23
【问题描述】:

我正面临这个错误:

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");

当我将相同的 URL 放在本地代码/环境中时,它可以正常工作。

【问题讨论】:

  • 您运行 ASP.NET 代码的 Web 服务器是否也是您的本地开发机器或其他机器?
  • 仅供参考,如果您向在 https 下运行的没有有效证书的站点发出请求,您也可以获得此信息。 (即 IIS Express 开发证书)。在浏览器中点击它并接受警告插页式将允许它加载。
  • Ken Johnson said 需要使用服务器 IP 而不是服务器名称。

标签: c# asp.net webclient


【解决方案1】:

默认使用系统代理。

要解决这个问题,请强制在 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>

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,通过为 webclient 设置代理解决了它

    很喜欢

     webClient.Proxy = new WebProxy("myproxy.com:portnumber"); 
     byte[]  bytearr= webClient.DownloadData(acsMetadataEndpointUrlWithRealm);
    

    【讨论】:

      【解决方案3】:

      我遇到了这个问题,需要使用远程服务器的 IP 而不是 DNS 名称。生产尝试使用其 DNS 名称访问远程服务器,这在防火墙的那一侧是不可行的。

      【讨论】:

        【解决方案4】:

        您运行代码的其他位置很可能确实无法访问该远程位置。 IE。在许多公司环境中,服务器不允许外部 Internet 访问。 您可能想尝试 ping/traceroute russgates85-001-site1.smarterasp.net 来自该其他服务器,如果无法访问 - 配置路由器/防火墙(开放端口等)或使用代理

        【讨论】:

        • 好的,但是网站已经托管在上面所有页面都可以工作的 URL 上。仅使用上述 url 获取内容无法使用 Web 客户端。
        • 不一样。 Clients workstation is accessing the Internet to reach the above URL. And in your code it's the server itself trying to do the same. Many policies don't allow that, especially via external URL. You may need to try local server name instead or even simple localhost` - 这可能有效,因为请求是服务器本身的本地请求
        • 好的,所以对于服务器/直播.. 我应该怎么做才能让它运行?目前它给了我我提到的错误。
        • 不,你不明白。即使对于远程部署的站点,也要在代码中将 URL 设为“localhost”(而不是在浏览器地址栏中)——在这种情况下,它将被使用而不是“russgate ...”
        • 好的,那么本地框的路径不同,您必须使用外部 URL。您能否与主机提供商交谈 - 他们是否可以从服务器本身解析服务器名称?这只是配置问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-08
        • 1970-01-01
        • 2016-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多