C# 400错误请求|从ASP.NET Web API接收自定义错误消息或模型

C# 400错误请求|从ASP.NET Web API接收自定义错误消息或模型,c#,asp.net-web-api,httpwebrequest,httpwebresponse,C#,Asp.net Web Api,Httpwebrequest,Httpwebresponse,我们有一个由第三方公开的Web API,我们没有任何控制权。看起来他们在抛出400(错误请求)时包装了自定义错误消息模型 当使用邮递员时,我们得到了自定义的错误消息模型 { "Message": "Site Name Exists", "ErrorId": "<some-guid>", "ErrorCode": 400, "GeneratedTime": "<some-datatime>", "RequestedUri": "ori

我们有一个由第三方公开的Web API,我们没有任何控制权。看起来他们在抛出400(错误请求)时包装了自定义错误消息模型

当使用邮递员时,我们得到了自定义的错误消息模型

{
    "Message": "Site Name Exists",
    "ErrorId": "<some-guid>",
    "ErrorCode": 400,
    "GeneratedTime": "<some-datatime>",
    "RequestedUri": "origin-api-uri"
} 
{
“消息”:“站点名称存在”,
“错误ID”:“,
“错误代码”:400,
“生成时间”:“,
“RequestedUri”:“源api uri”
} 
我们尝试使用
HttpWebResponse
WebResponse
从API获取响应,但它在
httpWebRequest.GetResponse()
上抛出400代码异常。当我们在邮递员中收到时,它没有给我们预期的响应,但是它说400(错误请求),并且带有默认错误消息,“远程服务器返回了一个错误”


我们希望以邮递员身份获取原始错误消息有什么想法吗?

默认情况下,大多数异常都会转换为HTTP响应,状态代码为500、内部服务器错误或400个错误请求,这是非常痛苦的情况。您需要在catch块中捕获WebException

参考:

试试看

 catch (WebException ex)
        {
            StreamReader sr = new StreamReader(ex.Response.GetResponseStream());
            Console.WriteLine(sr.ReadToEnd());
        }
我们错过了..GetResponseStream()。谢谢你的回答!