質問

コードを見てください:

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通信を行うために使用する最も簡単なものですが、必要な機能を提供しません。例外をスローしないため、これを行う方が良いと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top