0
 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 などの愚かな URL を記述すると、例外がスローされます。ただし、既存のページが数時間利用できない場合、この例外は発生しません。例外をスローせず、実行を停止します。このページが利用できない場合、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

どの例外をスローしていますか? 通常の例外ではできません。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 に答える
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 に答える