2010-12-06 3 views
1

私の質問: HttpWebResponse.StatusCodeはAsp.Netエラーを検出しますか?主に黄色の死の画面?HttpWebResponse.StatusCodeは500のエラーをトラップしていません

背景: 私は、サーバーとサービスをテストして、正常に機能していることを確認する簡単なC#コンソールアプリケーションを開発中です。私は、HttpStatusCodesがOK、Moved、InteralServerErrorなどで列挙されているので、私は仮定しました。

WebRequest request = WebRequest.Create(url); 
request.Timeout = 10000; 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if (response == null || response.StatusCode != HttpStatusCode.OK) 
{ 
    // SERVER IS OK 
    return false; 
} 
else 
{ 
    // SERVER HAS SOME PROBLEMS 
    return true; 
} 

これはうまくいかないことがわかりましたが、 Response.StatusCodeがHttpStatusCode.OKと等しいため、ASP.Netアプリケーションがクラッシュして黄色いScreen of Deathを表示し、アプリケーションが気にならなかったようです。

私には何が欠けていますか?

おかげ //ランス

更新ジョンへ おかげで、これは動作しているようです。

HttpWebResponse response; 
try 
{ 
    response = (HttpWebResponse)request.GetResponse(); 
} 
catch (WebException webexp) 
{ 
    response = (HttpWebResponse)webexp.Response; 
} 

答えて

4

GetResponseエラーWebExceptionがスローされます - しかし、あなたは、WebExceptionをキャッチし、応答を取得するためにWebException.Responseを使用して、そこからステータスコードを取得することができます。

私が知る限り、GetResponseは決してを返すので、コードからそのテストを削除することができます。また

、というより/他のブロックがtrueを返すように場合/偽、それだけで、たとえば、式を評価した結果を返すために簡単です持つ:

return response.StatusCode == HttpStatusCode.OK; 

(正直に言うと、あなたはおそらく返すことができますfalseの場合任意WebExceptionがスローされます...)

関連する問題