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

4
我正在尝试从特定网站下载响应,以确认该网站是否正常运行,并测量响应时间(这些信息包含在网站内容中)。
该页面的URL类似于https://www.blabla.com.au/ServiceAvailability
我可以在浏览器中输入页面URL并查看页面是否正常运行,同时也可以点击链接,在Visual Studio浏览器中加载该页面。
但是,当我尝试从我的应用程序中调用相同的URL时,我会收到以下System.Net.WebException错误:
{"The remote name could not be resolved: "www.blabla.com.au"}
代码运行在我的本地PC上,我也可以从我的本地PC访问该网站,并在浏览器和VS中打开该页面。
我的代码如下:
string myUrl ="https://www.blabla.com.au/ServiceAvailability";

using (WebClient webClient = new WebClient())
{ 
    result = webClient.DownloadString(myUrl);
}

其中result是一个string类型。

我尝试了以下方法来解决这个问题:

  1. Run visual studio as an administrator
  2. Use my user name/ password as credentials instead of the default
  3. Put an @ infront of the url
  4. Tried using WebRequest and HttpWebRequest as per code blocks below:

    WebRequest req = WebRequest.Create(myUrl);
    res = req.GetResponse();
    
    HttpWebRequest req = WebRequest.Create(myUrl) as HttpWebRequest;
    HttpWebResponse res = req.GetResponse() as HttpWebResponse;
    

可能SSL会是一个问题。您需要在请求中添加SSL证书吗? - qamar
嗨,Aleksey,我不这么认为,因为我也尝试使用http://www.google.com.au作为我的URL地址。 - fgenc
1个回答

5

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

如果是这种情况,请确保设置WebClient.Proxy属性以匹配浏览器中的代理。

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


我认为你的答案是正确的方向,如果它被证明是问题所在,我会尝试并投票支持你的答案。 - fgenc
3
通过使用 WebProxy 类,我能够解决我的问题。代码如下:using(WebClient webClient = new WebClient()) { webClient.Proxy = new WebProxy("myproxy.com"); result= webClient.DownloadString(someURL);} - fgenc
当我尝试加载wikipedia时,我遇到了相同的异常。调试时发现链接以某种方式更改为"www.en.wikipedia.org"。在http://mxtoolbox.com/DNSLookup.aspx中测试链接(https://www.en.wikipedia.org/)并确认它已经失效。有任何原因吗? - Lucas Palma Stabile
@LucasPalmaStabile 随时可以提出新问题而不是评论。 - Alexei Levenkov
你如何找到浏览器用于插入它的内容?谢谢。 - Adam Garner
@AdamGarner https://dev59.com/gmoy5IYBdhLWcg3wCpzQ 和类似的问题应该可以回答您的疑问。否则请提出单独的问题。 - Alexei Levenkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接