到目前为止,如果发生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()错误回调。
答案 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