【问题标题】:More efficient way to return errors in .NET Web Api 2 iHttpActionResult object?在 .NET Web Api 2 iHttpActionResult 对象中返回错误的更有效方法?
【发布时间】:2014-06-01 16:00:23
【问题描述】:

我想在我的服务中返回一个 HTTP 错误代码以及一个 JSON 对象。但我找不到直接的方法来做到这一点。

现在我就是这样做的:

if (!ModelState.IsValid)
{
    return ResponseMessage(Request.CreateResponse(HttpStatusCode.BadRequest, new BadRequestError(ModelState)));
}

基本上,我创建一个 HTTPResponse,其中包含我想要返回的对象,然后我将其“转换”为一个 IHttpActionResult 实例。

这是对的吗?还是我应该以另一种方式这样做?

【问题讨论】:

  • 返回一个 HTTP 错误代码,根据定义,意味着没有有效的响应。你想通过返回两者来完成什么?
  • 如果你的意思是错误代码和 json 对象,在 Json 对象中我有关于为什么请求是“错误请求”的详细信息。
  • 我认为您可能想要选择与“错误请求”不同的 HTTP 响应——这意味着请求的 HTTP 语法 格式不正确,这是不正确的。否则,您正在做的事情应该与任何其他选项一样有效。我以为你的意思是HttpResponseMessageResponseMessage 是一个 Exchange 类...

标签: c# rest httpresponse asp.net-web-api2


【解决方案1】:

如果您确定 BadRequest 是正确的错误消息,您可以使用 BadRequest(string error) 方法,如 here 所示。要发送 JSON,您首先将其解析为字符串并将其作为参数传递。

这将在控制器类中完成,并且由于它们是 ApiController 类型的超类而可用。另外,请注意 ApiController 类中还有其他错误类型的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2015-10-01
    • 2018-05-31
    • 2015-01-25
    • 2018-12-17
    • 1970-01-01
    • 2013-04-21
    相关资源
    最近更新 更多