[英]Asp.net mvc3 C#, trace 500 error response message?
我需要從HttpWebResponse獲取500錯誤響應消息。
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
{
post_response = responseStream.ReadToEnd();
responseStream.Close();
}
謝謝!
[編輯]
使用瀏覽器打開此網址,
瀏覽器將打印響應消息“缺少參數: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。
如果在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
}
}
除非您啟用了自定義錯誤,否則將在IIS級別處理HTTP錯誤。 查看這篇文章,了解如何更改您的Web配置以添加您自己的自定義錯誤頁面: 返回404錯誤ASP.NET MVC 3
這個問題: 如何在ASP.Net中發送狀態代碼500並仍然寫入響應?
...還具體說明了如何拋出500以及如何解決客戶錯誤。 它還包括Context.Response.TrySkipIisCustomErrors
,這是接受的答案。
這在我的情況下是有效的。 希望它會幫助你。
try
{
response = (HttpWebResponse)request.GetResponse();
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
responseMessage = streamReader.ReadToEnd();
Assert.IsTrue(response.StatusCode == HttpStatusCode.OK);
response.Close();
}
}
catch(WebException ex)
{
using (StreamReader streamReader = new StreamReader(ex.Response.GetResponseStream()))
{
responseMessage = streamReader.ReadToEnd();
File.WriteAllText(@"C:\Users\Paul\Documents\text.txt", responseMessage);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.