asp.net core 自定义异常处理中间件
Intro
在 asp.net core 中全局異常處理,有時候可能不能滿足我們的需要,可能就需要自己自定義一個中間件處理了,最近遇到一個問題,有一些異常,不希望記錄錯誤日志,目前主要是用戶請求取消導致的?TaskCanceledException?和?OperationCanceledException?異常。因為我的 ERROR 級別的日志會輸出到 Sentry,sentry的異常會自動發郵件提醒,如果是一些沒必要的錯誤,自然不需要記錄錯誤日志,于是就想自定義一個異常處理中間件,自己處理異常,不將異常處理直接交給 asp.net core 的異常處理。
請求取消
請求取消導致的異常:
asp.net core 引入了?HttpContext.RequestAborted?來監聽用戶取消請求(實際測試下來,并不是每次都會觸發,還沒搞清楚怎么100%的觸發),你可以使用?HttpContext.RequestAborted?來在用戶取消請求的時候中斷后臺邏輯的處理,避免處理一些不必要的業務,下面給出一個使用示例,示例源碼
,更多詳細信息可以參考 圣杰的這篇?中斷請求了解一下
異常處理中間件
異常處理中間件源碼:
可以通過配置?CustomExceptionHandlerOptions?來實現自定義的異常處理邏輯,默認請求取消會記錄一條 Information 級別的日志,其他異常則會記錄一條 Error 級別的錯誤日志
你可以通過下面的示例來配置遇到請求取消異常的時候什么都不做
Reference
https://www.jianshu.com/p/9988f2a27f8d
https://github.com/WeihanLi/ActivityReservation/blob/dev/ActivityReservation.API/ReservationPlaceController.cs
原文地址:https://www.cnblogs.com/weihanli/p/custom-exception-handler-for-aspnetcore.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的asp.net core 自定义异常处理中间件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 3.0中的WinFo
- 下一篇: .NET架构开发应知应会