对于从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);
}
还是有更好的办法?
一个更详细的示例,支持在c# HttpStatusCode中未定义的HTTP代码。
public class MyController : ApiController
{
public IHttpActionResult Get()
{
HttpStatusCode codeNotDefined = (HttpStatusCode)429;
return Content(codeNotDefined, "message to be sent in response body");
}
}
Content是在抽象类ApiController(控制器的基类)中定义的虚方法。声明如下:
protected internal virtual NegotiatedContentResult<T> Content<T>(HttpStatusCode statusCode, T value);
一个更详细的示例,支持在c# HttpStatusCode中未定义的HTTP代码。
public class MyController : ApiController
{
public IHttpActionResult Get()
{
HttpStatusCode codeNotDefined = (HttpStatusCode)429;
return Content(codeNotDefined, "message to be sent in response body");
}
}
Content是在抽象类ApiController(控制器的基类)中定义的虚方法。声明如下:
protected internal virtual NegotiatedContentResult<T> Content<T>(HttpStatusCode statusCode, T value);