asp.net - Web API 2 - ApiController.InternalServerError() 返回 HTTP 400 状态代码

标签 asp.net rest asp.net-web-api

此 Web API 操作返回 HTTP 500(内部服务器错误)状态代码:

public IHttpActionResult Post()
{
    return InternalServerError();
}

但此操作会返回 HTTP 400(错误请求)状态代码:
public IHttpActionResult Post()
{
    return InternalServerError(new Exception());
}

我希望两个操作都返回 500 状态代码,第二个操作将一些错误的详细信息放在响应正文中。

我的第一个想法是这是一个错误,但我想获得一些其他输入。为什么应该在第二个操作中返回 400 而不是 500 有什么好的理由吗?

更新:

关于此方法的文档如下:

Creates an System.Web.Http.Results.ExceptionResult (500 Internal Server Error) with the specified exception.



我越来越觉得这是一个错误。

最佳答案

是的,这是一个已知问题,已在 Web API 2 发布后修复...您可以使用以下解决方法来解决此问题...示例:

return new ResponseMessageResult(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, invalidOpException));

以下是之前记录的问题:
https://aspnetwebstack.codeplex.com/workitem/1318

关于asp.net - Web API 2 - ApiController.InternalServerError() 返回 HTTP 400 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103344/

相关文章:

java - 并发请求中rest api数据不匹配

java - Spring:为什么普通 Controller 和@ResponseBody Controller 生成不同的代码?

asp.net - ASP.NET Web API 完成向客户端发送时是否有通知

asp.net - 什么是流动布局?

c# - ASP.Net 5 AuthorizationHandler 失败重定向

RESTful 资源合并与拆分

angularjs - 从Angular发布到.net Web API

asp.net-web-api - JWT token 过期时间失败 .net core

asp.net - ScriptManager.RegisterStartupScript() 和 ScriptManager.RegisterClientScriptBlock() 之间有什么区别,因为两者都做同样的事情?

asp.net - 嵌套实体上的 odata v4 groupby