<video id="ftjrx"></video>
<ol id="ftjrx"><output id="ftjrx"></output></ol><track id="ftjrx"><cite id="ftjrx"><b id="ftjrx"></b></cite></track>
<delect id="ftjrx"><cite id="ftjrx"></cite></delect>

<ol id="ftjrx"><output id="ftjrx"></output></ol>

    <dl id="ftjrx"><ins id="ftjrx"><menuitem id="ftjrx"></menuitem></ins></dl>

      微信咨詢
      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
      該內容對我有幫助
      在線客服系統 国产日韩高清制服一区,伊在香蕉国产在线视频,亚洲精品亚洲人成在线,亚洲乱码中文字幕综合

      <video id="ftjrx"></video>
      <ol id="ftjrx"><output id="ftjrx"></output></ol><track id="ftjrx"><cite id="ftjrx"><b id="ftjrx"></b></cite></track>
      <delect id="ftjrx"><cite id="ftjrx"></cite></delect>

      <ol id="ftjrx"><output id="ftjrx"></output></ol>

        <dl id="ftjrx"><ins id="ftjrx"><menuitem id="ftjrx"></menuitem></ins></dl>