对于从Web API 2控制器返回,如果响应是OK(状态200),我可以返回内容与响应:

public IHttpActionResult Get()
{
    string myResult = ...
    return Ok(myResult);
}

如果可能的话,我希望在这里尽可能使用内置结果类型

我的问题是,对于另一种类型的响应(不是200),我如何用它返回消息(字符串)?例如,我可以这样做:

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

但这不是:

public IHttpActionResult Get()
{
    return InternalServerError("Message describing the error here");
}

理想情况下,我希望这是一般化的,这样我就可以用IHttpActionResult的任何实现发送回消息。

我需要这样做(并建立我的响应消息):

public IHttpActionResult Get()
{
    HttpResponseMessage responseMessage = ...;
    return ResponseMessage(responseMessage);
}

还是有更好的办法?


当前回答

在ASP。你可以在一个ResponseMessageResult中包装任何ResponseMessage:

public IHttpActionResult Get()
{
   HttpResponseMessage responseMessage = ...
   return new ResponseMessageResult(responseMessage);
}

在某些情况下,这可能是获得所需结果的最简单方法,尽管通常使用System.Web.Http.Results中的各种结果可能更可取。

其他回答

你可以用这个:

return Content(HttpStatusCode.BadRequest, "Any object");

在ASP。你可以在一个ResponseMessageResult中包装任何ResponseMessage:

public IHttpActionResult Get()
{
   HttpResponseMessage responseMessage = ...
   return new ResponseMessageResult(responseMessage);
}

在某些情况下,这可能是获得所需结果的最简单方法,尽管通常使用System.Web.Http.Results中的各种结果可能更可取。

你可以用这个:

return BadRequest("No data is present in table!!");

你还可以:

return InternalServerError(new Exception("SOME CUSTOM MESSAGE"));

我建议你阅读这篇文章。有很多方法可以使用现有的HttpResponse,但是如果您想利用Web Api 2,那么可以考虑使用一些内置的IHttpActionResult选项,例如

return Ok() 

or

return NotFound()

为Web Api控制器选择正确的返回类型