0
 Uri URL2 = new Uri(@"http://www......com");                      
 HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(URL2);
 request2.Timeout = 10000;  
 HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();

我正在使用上面的代码进行网络请求。当我写一个愚蠢的网址时,例如 www.oiasjdilasod.com 它会抛出异常;但是,当现有页面在几个小时内不可用时,我无法获得此异常。它不会抛出任何异常并停止运行。当此页面不可用时,我在 Internet Explorer 上尝试过,它显示页面找不到 http 400 错误请求。您对如何捕获此异常有任何建议吗?

4

4 回答 4

1

您从服务器收到响应的事实意味着它可用,只是无法正常工作 - 因此请求已发出并且不会因为服务器已响应而超时。

不是你想要的回应

相反,您应该检查StatusCode属性。

 if(response2.StatusCode != HttpStatusCode.OK)
 {
      throw new Exception("Site is responding incorrectly!");
 }
于 2012-11-05T09:40:50.753 回答
0

我以前也遇到过同样的问题

catch(WebException e) 
{
 Console.WriteLine(e.toString()); 
}

会解决的

于 2012-11-05T09:43:45.013 回答
0

这段代码对我有用

try
            {
                Uri URL2 = new Uri(@"http://www.*****.com");
                HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(URL2);
                request2.Timeout = 100;
                HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
            }
            catch (WebException e)
            {
                MessageBox.Show(e.Message.ToString());
            }
于 2012-11-05T09:44:14.703 回答
0

你抛出什么异常?常规异常不行,它必须是 WebException。

...
catch(WebException e) 
{
 Console.WriteLine("Error: "+ e.Status); 
}

编辑:

超时异常(连同 WebException)怎么样?

catch (TimeoutException e)
{
 Console.WriteLine(e);
}
catch(WebException e) 
{
 Console.WriteLine("Error: "+ e.Status); 
}
于 2012-11-05T09:42:02.923 回答