request.timeout不会抛出异常

时间:2012-11-05 09:34:49

标签: c# httpwebrequest timeout httpwebresponse timeoutexception

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

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

4 个答案:

答案 0 :(得分:1)

您从服务器获得响应的事实意味着它可用,它只是无法正常工作 - 因此请求已经完成,并且没有超时,因为服务器已经响应。

只是不是您想要的回复

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

 if(response2.StatusCode != HttpStatusCode.OK)
 {
      throw new Exception("Site is responding incorrectly!");
 }

答案 1 :(得分:0)

你抛出什么例外?常规的Exception不会这样做,它必须是WebException。

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

编辑:

超时异常(与WebException一起)怎么样?

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

答案 2 :(得分:0)

之前我有同样的问题和

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

将解决它

答案 3 :(得分: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());
            }