如何使用.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