【发布时间】:2015-04-19 18:02:13
【问题描述】:
为了从 Web API 2 控制器返回,如果响应正常(状态 200),我可以返回包含响应的内容,如下所示:
public IHttpActionResult Get()
{
string myResult = ...
return Ok(myResult);
}
如果可能,我想尽可能在这里使用内置结果类型:https://msdn.microsoft.com/en-us/library/system.web.http.results(v=vs.118).aspx
我的问题是,对于另一种类型的响应(不是 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);
}
或者有更好的方法吗?
【问题讨论】:
-
你不能用
ApiController.InternalServerErrormsdn.microsoft.com/en-us/library/dn292630(v=vs.118).aspx -
@Milen,谢谢。类似的东西可能会奏效。我不喜欢的部分是它需要为我希望能够使用的每个现有实现创建不同的 IHttpActionResult 实现。
-
@Ric,不,参数是异常。我想将消息设置为字符串。此外,这并没有解决更一般的情况,即代码不一定是内部服务器错误。
-
@mayabelle:你看到 Shamil Yakupov 的回答了吗?接受的答案要简单得多。
标签: c# asp.net-web-api httpresponse