Return 自定义错误 WebApi ASP.NET 5 HttpResponseException 错误的状态代码

Return custom errors WebApi ASP.NET 5 HttpResponseException wrong status code

WebAPI / REST 允许您发送自定义错误消息以及标准状态代码,即 402 - 未找到 + 您自己在 header / body 中的消息。

这在 ASP.NET 4.X 上效果很好,但在 ASP.NET 5 RC 1 上有些不对劲。

虽然我抛出自定义错误的代码看起来像这样:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Ambiguous) 
{ 
    Content = feedback, ReasonPhrase = reason }
);

返回的代码(到 Angular)不是指定的代码(示例中的 300)。 在 localhost / IIS Express 上我得到 500 Internal Server Error 并且在 Azure 上的生产中我得到 404 Not Found.

查看 ASP.NET 文档,我发现了一些可能相关的内容:

If the server catches an exception before the headers have been sent it will send a 500 Internal Server Error response with no body.

https://docs.asp.net/en/latest/fundamentals/error-handling.html#server-exception-handling

那么有没有人成功地从 ASP.NET 5 RC 1 WebAPI 向客户端返回带有自定义 (body) 消息的状态代码?

更新:

这种方法似乎效果更好 - 但这并不能回答为什么 HttpResponseException 不起作用。

this.Response.StatusCode = (int)HttpStatusCode.BadRequest;
return this.HttpBadRequest(new { ex.Message });

为了回答您更新后的问题,他们删除了对 HttpResponseException 的使用,因为它助长了使用异常进行流量控制的不良做法。参见 https://github.com/aspnet/Mvc/issues/4311