.NETでASP.NET内部サーバーエラーの説明を読み取る方法
質問
コードを見てください:
using (var client = new WebClient())
{
try
{
var bytesReceived = client.UploadData("http://localhost", bytesToPost);
var response = client.Encoding.GetString(bytesReceived);
}
catch (Exception ex)
{
}
}
UploadDataメソッドが呼び出されると、このHTTP 500内部サーバーエラーが発生します。しかし、" ex"のどこにもエラーの説明が表示されません。デバッグ中のオブジェクト。エラーの説明を読むことができるように、このコードを書き直すにはどうすればよいですか?
解決
多くの場合、Webサーバーは、詳細情報(サーバーに応じてHTMLまたはプレーンテキスト)を含むエラーページを返します。これを取得するには、 WebException
をキャッチし、その Response
プロパティから応答ストリームを読み取ります。
他のヒント
この方法でデバッグするのに役立つ情報が見つかりました:
catch (WebException ex)
{
HttpWebResponse httpWebResponse = (HttpWebResponse)ex.Response;
String details = "NONE";
String statusCode = "NONE";
if (httpWebResponse != null)
{
details = httpWebResponse.StatusDescription;
statusCode = httpWebResponse.StatusCode.ToString();
}
Response.Clear();
Response.Write(ex.Message);
Response.Write("<BR />");
Response.Write(ex.Status);
Response.Write("<BR />");
Response.Write(statusCode);
Response.Write("<BR />");
Response.Write(details);
Response.Write("<BR />");
Response.Write(ex);
Response.Write("<BR />");
}
HttpExceptionをキャッチして、GetHtmlErrorMessage()を呼び出してみてください
いつも気に入っています
Debug.WriteLine( ex.ToString() );
HttpWebRequestとHttpWebResponseを使用する必要があります。 WebClientは、基本的なWeb通信を行うために使用する最も簡単なものですが、必要な機能を提供しません。例外をスローしないため、これを行う方が良いと思います。
所属していません StackOverflow