ASP.NET 全域性異常處理
在我們寫程式時偶爾會由於疏忽導致有些異常沒有進行處理。如果將異常詳細資訊提示給使用者會帶來不安全因素,如果不提示詳細資訊又會給使用者報告異常帶來麻煩。雖然可以通過配置customErrors mode來實現只有管理員可以檢視錯誤,但發現問題的時間可能會比較長。通過全域性異常處理就可以在異常發生時立即記錄異常,或直接傳送郵件向管理員報告,以在最快的速度發現並處理異常。
要為ASP.NET應用程式新增全域性異常處理主要是新增HttpApplication的Error事件的處理。這與在BeginRequest事件中進行URL重寫方法類似。先建一個繼承System.Web.IHttpModule的類。然後新增Init方法和ShowError方法。
{
public class HttpModule : System.Web.IHttpModule
{
public void Init(System.Web.HttpApplication context)
{
context.Error += new EventHandler(ShowError);
}
private void ShowError(object sender, EventArgs e)
{
//在這裡進行異常處理
}
}
}
然後還需要配置web.config的httpModules使之生效.
我現在比較喜歡的做法是將異常的詳細資訊記錄在資料庫中,然後返回一個編號,再將頁面重定向到自己寫的錯誤提示頁,將這個編號提示給使用者,使用者如果要報告錯誤只需提供該錯誤編號,管理員就能在後臺中找到錯誤的詳細資訊並進行修改。
下面說2個我在做全域性異常處理時碰到的問題及我的解決方案
第一個是獲取異常hResult,由於是私有屬性不能直接訪問,解決方法是通過(int)System.Runtime.InteropServices.Marshal.GetHRForException(exception)來獲取
第二個問題是記錄了很多不是由於ASP.NET應用程式引發的錯誤,比如使用者鍵入一個錯誤的URL,異常處理系統會記錄一個“檔案不存在。”的錯誤,而這些錯誤記錄不僅不能真正反映出ASP.NET應用程式的異常反而會給管理員帶來更多麻煩。我的解決方法是通過判斷if(exception is System.Web.HttpException)來過濾這些HttpException.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-608505/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- spring 全域性異常處理Spring
- springboot全域性異常處理Spring Boot
- .netcore全域性異常處理NetCore
- SpringBoot之全域性異常處理Spring Boot
- NETCORE - 全域性異常處理(Exception)NetCoreException
- dotNet8 全域性異常處理
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- 設計一個全域性異常處理器
- SpringBoot處理全域性統一異常Spring Boot
- Spring Cloud Gateway的全域性異常處理SpringCloudGateway
- SpringBoot中的全域性異常處理Spring Boot
- 簡單的全域性異常統一處理
- SpringBoot優雅的全域性異常處理Spring Boot
- Spring Boot 2 Webflux的全域性異常處理Spring BootWebUX
- Vue3 如何實現全域性異常處理?Vue
- Django筆記三十一之全域性異常處理Django筆記
- spring-boot-route(四)全域性異常處理Springboot
- ASP.NET異常處理ASP.NET
- 【SpringBoot】全域性異常處理@ControllerAdviceSpring BootController
- ASP.NET MVC 異常處理ASP.NETMVC
- SpringBoot進行優雅的全域性異常處理Spring Boot
- flex全域性異常Flex
- 聊聊springboot專案全域性異常處理那些事兒Spring Boot
- Asp.Net 異常處理機制ASP.NET
- NetCore實現全域性模型繫結異常資訊統一處理NetCore模型
- spring boot 實現監聽器、過濾器、全域性異常處理Spring Boot過濾器
- 實戰Spring Boot 2.0系列(二) - 全域性異常處理和測試Spring Boot
- Spring Boot乾貨系列:(十三)Spring Boot全域性異常處理整理Spring Boot
- wpf 捕獲全域性異常
- 異常篇——異常處理
- springmvc高可用響應物件以及全域性異常處理類的編寫SpringMVC物件
- 異常處理
- 關於Asp.net ajax下的異常處理ASP.NET
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React