ASP.NET Web API 2 BadRequest 内容

ASP.NET Web API 2 BadRequest content

当资源 returns BadRequest 时,我没有在客户端收到预期的响应内容。

[HttpGet]
[Route("Test", Name = "Test")]
public async Task<IHttpActionResult> Test()
{
    var result = BadRequest("test");
    return result;
}

在客户端(参见下面的 hurl.it 示例)我只是在正文中收到字符串 Bad Request

服务器上的响应似乎没问题:

它在某些时候工作正常(returning 字符串或内容中的 ModelState),最近我们注意到了这个问题。我想不出任何可能导致它的服务器最近的变化。

它既不能在本地工作,也不能部署在服务器上。

可以在项目中任意ApiController中复现

return 好的("test"); 按预期工作。

有谁知道什么会导致这种行为?

谢谢!

很难说哪里出了问题。

您可以检查的内容:

  • 可能是您的错误是由无效的身份验证请求引起的
  • 尝试一个新项目,如果这有所不同,那么您就知道这是您的项目,并且没有由您的本地 IIS 和服务器设置引起的错误(极不可能,但您永远不会知道。
  • 检查您的 App_Start 文件夹,其中包含 BundleConfigRouteConfigFilterConfig,WebApiConfig`。也许某些自定义设置确实会导致您收到错误的请求错误,而这可能是未找到的错误。
  • 检查是仅在Get请求上还是在其他请求上,可能是程序集版本不同造成的。
  • 检查您是否只有 400 有问题,或者 401、500 是否也有同样的问题?
  • 检查您的 Web.Config 文件,这些文件可能包含 <CustomErrors> 可能会重定向,或抛出自己的错误。

经过一些评论,自定义错误似乎是问题所在。