C# 有没有办法从WebException中提取消息?

C# 有没有办法从WebException中提取消息?,c#,httpwebresponse,C#,Httpwebresponse,有没有一种方法可以提取作为HttpWebResponse可能发生的WebException的一部分发送回的文本?我可以获得所有的头信息,但如果可能的话,我希望得到一个自定义消息,返回400或401响应。我目前正在测试中处理异常,如下所示: var ex = Assert.Throws<WebException>(() => { HttpWebResponse response = Utils.GetRawResponse(

有没有一种方法可以提取作为HttpWebResponse可能发生的WebException的一部分发送回的文本?我可以获得所有的头信息,但如果可能的话,我希望得到一个自定义消息,返回400或401响应。我目前正在测试中处理异常,如下所示:

        var ex = Assert.Throws<WebException>(() =>
        {
            HttpWebResponse response = Utils.GetRawResponse(url);
        });

        Assert.Contains("401", ex.Message);
这可以工作,但没有自定义消息

顶部希望更清楚一点,我指的是屏幕截图底部的消息文本:
处理异常时,请尝试以下操作:

if(ex.Response.ContentLength>0) 
{
    string ResponseBody = (new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
    //  Do whatever you want with the ResponseBody
}
(类似于中的示例)


关键是WebException有一个响应属性:

通过Gusmans提醒,我创建了一个从WebException提取响应的方法:

    public static string ParseExceptionRespose(WebException exception)
    {
        string responseContents;
        Stream descrption = ((HttpWebResponse)exception.Response).GetResponseStream();

        using (StreamReader readStream = new StreamReader(descrption))
        {
            responseContents = readStream.ReadToEnd();
        }

        return responseContents;

    }

该消息应该在响应正文中,您是否尝试获取响应流并将其读取为字符串?啊,流异常响应。。。duh.最后,400响应是一个正常的web响应,在WebException中有一个响应对象,具有来自服务器的真实响应是的,我看到了,只是没有考虑得到响应。可能是重复的
    public static string ParseExceptionRespose(WebException exception)
    {
        string responseContents;
        Stream descrption = ((HttpWebResponse)exception.Response).GetResponseStream();

        using (StreamReader readStream = new StreamReader(descrption))
        {
            responseContents = readStream.ReadToEnd();
        }

        return responseContents;

    }