1

HttpWebResponse から 500 エラー応答メッセージを取得する必要があります。

HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
{
      post_response = responseStream.ReadToEnd();
      responseStream.Close();
}

ここに画像の説明を入力

ありがとうございました!

[編集]

ブラウザを使用してこの URL を開き、

https://www.sagepayments.net/web_services/vterm_extensions/transaction_processing.asmx/BANKCARD_PRIOR_AUTH_SALE

ブラウザーは、応答メッセージ「Missing parameter: M_ID.」を出力します。

今、asp.netを使用してその応答メッセージを取得したい

var post_string = "hello=hi";

HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create("https://www.sagepayments.net/web_services/vterm_extensions/transaction_processing.asmx/BANKCARD_PRIOR_AUTH_SALE");
    objRequest.Method = "POST";
    objRequest.ContentLength = post_string.Length;
    objRequest.ContentType = "application/x-www-form-urlencoded";

    // post data is sent as a stream
    StreamWriter myWriter = null;
    myWriter = new StreamWriter(objRequest.GetRequestStream());
    myWriter.Write(post_string);
    myWriter.Close();

    // returned values are returned as a stream, then read into a string

    try
    {
    HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
    using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
    {
        post_response = responseStream.ReadToEnd();
        responseStream.Close();
    }

    Response.Write(post_response);
    }
    catch(WebException e)
    {   
    Response.Write("Error : "+e.Message); 
    Response.Write("<br /> Data : " + e.Data);
    Response.Write("<br /> HelpLink : " + e.HelpLink);
    Response.Write("<br /> InnerException : " + e.InnerException);
    Response.Write("<br /> Response : " + e.Response);
    Response.Write("<br /> Source : " + e.Source);
    Response.Write("<br /> Status : " + e.Status);
    Response.Write("<br /> TargetSite : " + e.TargetSite);
    }


Result : 
Error : The remote server returned an error: (500) Internal Server Error.
Data : System.Collections.ListDictionaryInternal
HelpLink :
InnerException :
Response : System.Net.HttpWebResponse
Source : System
Status : ProtocolError
TargetSite : System.Net.WebResponse GetResponse()

このメッセージを取得する方法?

パラメータがありません: M_ID。

4

3 に答える 3

4

Web リクエスト中に例外がスローされた場合は、Web レスポンスの StatusCode & StatusDescription プロパティを確認する必要があると思います。

例えば:

try
{
    HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
    using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
    {
        post_response = responseStream.ReadToEnd();
        responseStream.Close();
    }
}
catch(WebException wex)
{
    // This is the line that gets you the response object
    HttpWebResponse response = (HttpWebResponse)wex.Response;

    if(response != null)
    {
        // You can now read the response StatusCode and StatusDescription
        HttpStatusCode responseCode = response.StatusCode;
        String statusDescription = response.StatusDescription;

        // Add your status checking logic here
    }
}
于 2012-06-18T22:10:27.000 に答える
0

カスタム エラーをオンにしない限り、HTTP エラーは IIS レベルで処理されます。Web 構成を変更して独自のカスタム エラー ページを追加する方法については、この投稿を確認してください: Returning 404 Error ASP.NET MVC 3

この質問: ASP.Net でステータス コード 500 を送信し、応答に書き込む方法は?

...また、特に 500 がスローされる方法と、カスタマー エラーの対処方法についても説明します。Context.Response.TrySkipIisCustomErrorsまた、受け入れられた答えについてのビットも含まれています。

于 2012-06-18T21:51:43.790 に答える