2017-07-14 51 views
0

到目前爲止,如果一個web api 2錯誤發生,我發現它,我會返回一個自定義對象,並填寫錯誤信息從catch。然而,這會使http.post()進入成功的方法而不是錯誤,然後我必須看看自己的布爾成功變量,如果真的很好,如果錯誤顯示錯誤。由於2種不同的原因,我必須在2個不同的地方尋找錯誤,這是很煩人的。從Web API 2有沒有辦法讓http.post()觸發錯誤回調,如果我在web api控制器中發現錯誤,則填寫錯誤消息?Web API 2返回一個錯誤,並使http.post捕獲它

[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()錯誤回調。如果您想自定義返回您可以創建更多的細節HttpResponseMessage響應

throw new HttpResponseException(HttpStatusCode.InternalServerError); 

+0

不要再追了異常應該引發這種行爲。或者你可以捕獲它,記錄有用的信息,並拋出一個帶有最終用戶友好信息的'HttpResponseException'。 – David

+1

[如何在Web API中拋出異常?](https://stackoverflow.com/questions/14607844/how-to-throw-exception-in-web-api) – CodingYoshi

回答

4

只是拋出一個異常

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

文檔here

+1

完美的感謝。使我無需創建自定義響應對象。 – user441521

相關問題