<track id="h51rz"><cite id="h51rz"></cite></track>

                    微信咨詢
                    QQ咨詢
                    服務熱線
                    服務熱線:0851-83890865
                    移動熱線:18908513754
                    TOP

                    ASP.NET MVC全局異常處理和捕獲的思路

                    發布時間:2016-07-27 瀏覽:

                    這幾天稍微研究了下ASP.NET MVC的全局異常處理以及捕獲,相比ASP.NET Web Form,ASP.NET MVC的處理方式有所不同,以往是通過注冊Global.asax文件中的Application_Error事件進行全局異常捕獲,現在MVC可以使用強大的過濾器進行自定義錯誤的處理。本文作為學習筆記,將ASP.NET MVC中,我已知的幾種全局異常捕獲及處理的思路進行整理和對比分析。

                    此方法對于Web Form和MVC來說都是通用的,在ASP.NET中,只要網站程序拋出未捕獲的異常都會觸發Application_Error事件。我們在事件中通過Server.GetLastError()方法獲取Exception對象(可轉化成HttpException對象,以獲取相關的HTTP錯誤代碼)。

                    使用此方法一定要把GlobalFilter全局過濾器中的HandleErrorAttribute注冊取消掉,也可以將配置文件中的customErrors節點關閉,否則HTTP 500的錯誤將不會被Application_Error事件捕獲。

                    還要注意一點,如果想在事件中跳轉到自己定義的錯誤頁面,那么在響應輸出之前一定要記得調用 Server.ClearError()方法清除異常。否則會有下面兩種情況,如果自定義錯誤關閉,會顯示錯誤黃頁(即詳細異常信息頁面),如果沒關閉則會跳轉到自定義錯誤定義的頁面:

                    效果如下:


                    小結:這種方法有非常好的兼容性,可以在Web Form和MVC中通用。另外一點是SEO優化十分友好,我們可以對HTTP錯誤碼進行控制,畢竟customErrors是使用302跳轉,是十分不利于SEO的。此外要注意在MVC中Server.Transfer不支持路由!

                    從此的開發中,又跳過一個小坑!。越努力,越幸運?。?!


                    0
                    該內容對我有幫助
                    在線客服系統 成 人 网 站94免费观看,亚洲熟女少妇乱图片区,最刺激的交换夫妇中文字幕

                        <track id="h51rz"><cite id="h51rz"></cite></track>