【问题标题】:How do you throw HttpResponseException in ASP 5 (vnext)如何在 ASP 5 (vnext) 中抛出 HttpResponseException
【发布时间】:2015-06-22 04:49:09
【问题描述】:

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

throw new HttpResponseException(HttpStatusCode.BadRequest);

但是 HttpResponseExceptionSystem.Web 的一部分,它已从 ASP 5 中删除,因此我无法再实例化它。

在 vNext 中执行此操作的正确方法是什么?

【问题讨论】:

标签: c# asp.net asp.net-web-api asp.net-core


【解决方案1】:

要回答您的问题,您可以使用WebApiCompatibilityShimHttpResponseException(和许多其他功能)端口转发到MVC 6。(感谢DWright 提供到that article 的链接。)

似乎 MVC-6 的方法是从您的方法返回一个 IActionResponse,然后调用 HttpBadRequest(),这是一个基于 Microsoft.AspNet.Mvc.Controller 类的方法,它返回一个 BadRequestResult,我相信这是在响应中获得 400 状态的最佳方式。

Controller 类也有其他响应代码的方法 - 包括导致返回 404 的 HttpNotFound() 方法。

另见:https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api

【讨论】:

  • 这是准确的。 FWIW,OP 似乎在寻找 400 而不是 404,因此 return HttpBadRequest()。来到这里寻找 401,或return HttpUnauthorized()
  • 谢谢,@lc。 - 我没有注意到差异。我编辑了我的回复。
  • WebApiCompatibilitySim 的链接已失效。另外,您能否评论一下我们应该如何使用 MVC5 响应基本的 RESTful 请求(即使在生成的模板中,它也是“无效”方法)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多