ASP 5(vNext)中如何抛出HttpResponseException?

14

我正在ASP 5中编写API控制器。如果传递给服务的参数不正确,我希望返回一个错误请求代码异常。在当前版本的WebAPI中,我会这样做:

throw new HttpResponseException(HttpStatusCode.BadRequest);

然而 HttpResponseExceptionSystem.Web 的一部分,在 ASP 5 中已被删除,因此我无法再实例化它。

在 vNext 中应该如何正确处理这个问题?


1
请查看http://www.strathweb.com/2015/01/migrating-asp-net-web-api-mvc-6-exploring-web-api-compatibility-shim/。 - DWright
1个回答

8
为了回答你的问题,你可以使用 WebApiCompatibilityShim,它将 HttpResponseException(和许多其他功能)转移到 MVC 6 中。(感谢 DWright 提供的指向这篇文章的链接。)
似乎在 MVC-6 中的做法是从你的方法中返回一个 IActionResponse,然后调用基类Microsoft.AspNet.Mvc.Controller上的 HttpBadRequest() 方法,该方法返回一个 BadRequestResult,我认为这是将 400 状态放入响应的最佳方式。 Controller 类还有其他响应代码的方法,包括 HttpNotFound() 方法,它会导致返回 404。
另请参阅:https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-web-api

这是准确的。顺便说一下,OP似乎正在寻找400而不是404,因此使用return HttpBadRequest()。并且他在这里寻找401,或者使用return HttpUnauthorized() - lc.
谢谢,@lc。我没有注意到不一致之处。我编辑了我的回复。 - n8mob
WebApiCompatibilitySim的链接已失效。此外,您能否评论一下我们应该如何使用MVC5对基本的RESTful请求进行响应(即使在生成的模板中,它们也是“void”方法)。 - Quark Soup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接