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

400 Bad Request | Receive custom error message or model from ASP.NET Web API

我们有一个 Web API 由第 3 方公开,我们无法控制。看起来他们在返回 400 (Bad Request) 时包装了自定义错误消息模型。

我们在使用 Postman 时获得自定义错误消息模型

{
    "Message": "Site Name Exists",
    "ErrorId": "<some-guid>",
    "ErrorCode": 400,
    "GeneratedTime": "<some-datatime>",
    "RequestedUri": "origin-api-uri"
} 

我们尝试使用 HttpWebResponseWebResponse 从 API 获取响应,但它会在 httpWebRequest.GetResponse() 上抛出 400 代码异常。它没有像我们在 Postman 中得到的那样给我们预期的响应,但它说 400 (Bad Request) 和默认错误消息,'The remote server returned an error'.

我们想以 Postman 的身份获取原始错误信息。 有什么想法吗?

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

参考:Exception Handling in ASP.NET Web API

试一试。

 catch (WebException ex)
        {
            StreamReader sr = new StreamReader(ex.Response.GetResponseStream());
            Console.WriteLine(sr.ReadToEnd());
        }