请求超时不会引发异常


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

我正在使用上面的代码进行WebRequest。当我写一个愚蠢的URL时,例如www.oiasjdilasod.com,它会引发异常。但是,如果几个小时内没有现有页面,我将无法获得此例外。它不会引发任何例外并停止运行。当我在Internet Explorer上尝试过此页面时,它显示页面找不到http 400不良请求。您是否有任何建议如何捕获此例外?

您正在从服务器中获得响应的事实意味着它可用,它只是无法正常工作 - 因此,请求已发出,并且由于服务器已响应而没有时间耗尽。

只是不是您想要的响应

相反,您应该检查状态代码属性。

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

我以前有相同的问题,

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

将解决它

这个代码对我有用

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());
            }

您投掷什么例外?常规例外不会做,这必须是webException。

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

编辑:

超时例外(以及webException)怎么样?

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

相关内容

  • 没有找到相关文章

最新更新