How to read an ASP.NET internal server error description with .NET?

半腔热情 提交于 2019-12-07 04:47:10

问题


Behold the code:

using (var client = new WebClient())
{
    try
    {
        var bytesReceived = client.UploadData("http://localhost", bytesToPost);
        var response = client.Encoding.GetString(bytesReceived);
    }
    catch (Exception ex)
    {
    }
}

I am getting this HTTP 500 internal server error when the UploadData method is called. But I can't see the error description anywhere in the "ex" object while debugging. How do I rewrite this code so I can read the error description?


回答1:


Web servers often return an error page with more details (either HTML or plain text depending on the server). You can grab this by catching WebException and reading the response stream from its Response property.




回答2:


I found useful information for debugging this way:

        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 />");
        }



回答3:


Try catching a HttpException and call GetHtmlErrorMessage() on it




回答4:


I've always liked

Debug.WriteLine( ex.ToString() );



回答5:


You should use HttpWebRequest and HttpWebResponse. WebClient is the simplest thing to use to do basic web communication, but it does not provide the functionality you need. I think it's better to do this because it will not throw an exception.



来源:https://stackoverflow.com/questions/1015020/how-to-read-an-asp-net-internal-server-error-description-with-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!