webapi 異常處理

2022-03-31 10:06:57 字數 2915 閱讀 9130

參考:

httpresponseexception型別是一種特殊情況。 此異常將返回異常建構函式中指定任何 http 狀態**。 例如,以下方法將返回 404,找不到,如果id引數無效。

這個異常並不會觸發我們的異常過濾器

;//這並不會觸發我們的異常過濾器,他會直接返回

②異常篩選器

您可以自定義 web api 通過編寫處理異常的方式異常篩選器。 異常篩選器時,控制器方法引發任何未處理的異常時執行不 httpresponseexception異常。 httpresponseexception型別是一種特殊情況,因為它專為返回的 http 響應。

異常篩選器實現system.web.http.filters.iexceptionfilter介面。 編寫異常篩選器的最簡單方法是從派生system.web.http.filters.exceptionfilterattribute類並重寫onexception方法。

;//可以根據具體情況判斷

//if (actionexecutedcontext.exception is notimplementedexception)

//;//}

//else

//return

base

.onexceptionasync(actionexecutedcontext, cancellationtoken);}}

放在我們的控制器上面:

httperror物件提供一致的方法來響應正文中返回的錯誤資訊。 下面的示例演示如何返回 http 狀態** 404 (找不到) 與httperror響應正文中。也是直接返回內容,並不會觸發異常。

全域性異常:下面的異常也無法捕捉

1.從控制器的建構函式引發的異常。

2.從訊息處理程式引發的異常。

3.在路由期間引發的異常。

4.響應內容序列化期間引發的異常。

④iexceptionlogger(異常記錄器)和 iexceptionhandler(異常處理程式)

異常記錄器是檢視所有未處理的異常捕獲到由 web api 的解決方案。

異常處理程式是用於自定義所有可能的響應未經處理的異常捕獲到由 web api 的解決方案。

異常篩選器是最簡單的解決方案用於處理與特定操作或控制器相關的子集未經處理的異常。

這裡我們用iexceptionhandler來完成我們的異常的處理。

建立我們的異常類

執行

/// ///

///public taskexecuteasync(cancellationtoken cancellationtoken)

}

註冊全域性: webapiconfig中

//

web api 配置和服務

config.services.replace(typeof(iexceptionhandler), new myexceptionhandler());

效果跟上面是一樣的

WebApi 異常處理解決方案

public class webapiexceptionfilterattribute exceptionfilterattribute else if actionexecutedcontext.exception is timeoutexception 這裡可以根據專案需要返回到客戶端特定的狀態...

WebApi 異常處理解決方案

1.繼承exceptionfilterattribute類,重寫onexception方法 public class webapiexceptionfilterattribute exceptionfilterattribute string errmsg jsonconvert.serialize...

WebApi異常處理解決方案

一 使用異常篩選器捕獲所有異常 public class webapiexceptionfilterattribute exceptionfilterattribute else if actionexecutedcontext.exception is timeoutexception 這裡可以根...