Web API 2返回错误并使http.post捕获它

时间:2017-07-14 18:23:13

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

到目前为止,如果发生web api 2错误并且我抓住了它,我将返回一个自定义对象并从catch中填写错误消息。然而,这将使实际的http.post()进入成功方法而不是错误然后我必须查看我自己的布尔成功变量,如果为真,那么所有好,如果错误显示错误。这有点烦人,因为我必须在2个不同的地方寻找错误,原因有两个。从Web API 2有一种方法我可以使http.post()触发错误回调,而如果我在web api控制器中发现错误,我会填写错误消息吗?

[HttpPost]
public MyResponseObject UpdateData(RequestObject req)
{
   MyResponseObject resp = new MyResponseObject();
   resp.Success = true;

   try{
      // error happens here
   }catch(Exception ex){
      resp.Success = false;
      resp.Msg = ex.Message;
   }

   return resp;
}

http.post()调用仍然会成功,但现在我必须查看resp.Success的成功回调,看看它是否真的成功了。当然可以进行API调用,但内部出现了问题。我希望能够显示该消息并使调用失败,以便使用异常消息调用http.post()错误回调。

1 个答案:

答案 0 :(得分:5)

抛出异常:

throw new HttpResponseException(HttpStatusCode.InternalServerError);

如果您想自定义返回的回复,可以创建一个更详细的HttpResponseMessage

var response = new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
    Content = new StringContent("We messed up"),
    ReasonPhrase = "Error"
}
throw new HttpResponseException(resp);

文档here