尝试使用 .NET WebClient 下载响应时出现“无法解析远程名称”异常

fge*_*enc 4 .net c# asp.net webrequest

我正在尝试从某个网站下载响应,以确认该网站已启动并测量响应时间(在网站内容中提供)

该页面的网址如下https://www.blabla.com.au/ServiceAvailability

我可以在浏览器中输入页面网址,我可以看到页面已启动并提供了响应时间。我还可以单击该链接,该页面也将加载到 Visual Studio 浏览器中。

但是当我尝试从我的应用程序调用相同的网址时,我得到以下信息System.Net.WebException

{“无法解析远程名称:“www.blabla.com.au”}

该代码在我的本地 PC 上运行,我也从本地 PC 访问该网站,并且可以从浏览器和 VS 中打开该页面

我的代码如下所示:

string myUrl ="https://www.blabla.com.au/ServiceAvailability";

using (WebClient webClient = new WebClient())
{ 
    result = webClient.DownloadString(myUrl);
}
Run Code Online (Sandbox Code Playgroud)

哪里result是一个string

我已尝试以下方法来解决该问题:

  1. 以管理员身份运行 Visual Studio
  2. 使用我的用户名/密码作为凭据而不是默认值
  3. 在url前面加上@
  4. 尝试按照以下代码块使用 WebRequest 和 HttpWebRequest:

    WebRequest req = WebRequest.Create(myUrl);
    res = req.GetResponse();
    
    HttpWebRequest req = WebRequest.Create(myUrl) as HttpWebRequest;
    HttpWebResponse res = req.GetResponse() as HttpWebResponse;
    
    Run Code Online (Sandbox Code Playgroud)

Ale*_*kov 5

一种可能性是您的浏览器使用了某种代理,而您的代码没有使用(或使用不同的代理)。

如果是这种情况,请确保将WebClient.Proxy属性设置为与浏览器中的属性相匹配。

如果不是代理问题 - 检查 DNS 是否通过外部工具(如http://mxtoolbox.com/DNSLookup.aspx)正确解析 - 不太可能,但如果浏览器使用与您的代码不同的 DNS,则有可能。

  • 我能够通过使用 WebProxy 类 `using (WebClient webClient = new WebClient()) { webClient.Proxy = new WebProxy("myproxy.com"); 来解决我的问题。结果= webClient.DownloadString(someURL);}` (3认同)