.NET MVC自定義錯誤處理頁面的方法


      在ASP.NET MVC中,我們可以使用HandleErrorAttribute特性來具體指定如何處理Action拋出的異常.只要某個Action設置了HandleErrorAttribute特性,那么默認的,當這個Action拋出了異常時MVC將會顯示Error視圖,該視圖位於~/Views/Shared目錄下.

設置HandleError屬性

  可以通過設置下面這些屬性來更改HandleErrorAttribute特性的默認處理:

  ExceptionType.指定過濾器處理那種或哪些類型的異常,如果沒有指定該屬性,過濾器將會處理所有的異常.

  View.指定發生異常時過濾器要顯示的視圖名稱.

  Master.指定視圖母版的名稱,如果有的話.

  Order.指定過濾器應用的順序,如果一個Action有多個HandleErrorAttribute過濾器.

 

指定Order屬性

  如果某個Action設置了多個HandleErrorAttribute,Order屬性可以用來確定使用哪個過濾器.其值可以設置為從-1(最高優先級)到任何正整數之間的整數來標識其優先級,值越大,優先級別越低.Order屬性遵循以下規則:

  應用到Controller上的過濾器將會自動應用到該Controller的所有Action上.

  如果Controller和Action都應用了HandleErrorAttribute,那么只要Order屬性值相同,將會先執行Controller上的過濾器,而后才會執行Action上的過濾器.

  對於相同Order屬性的過濾器,其執行先后次序不定.

  如果沒有指定Order屬性,則默認為-1,這意味着該過濾器將比其他的過濾器優先執行,除非其他過濾器指定了Order為-1.

  如果有多個過濾器可適用,那么第一個可以處理該異常的過濾器會被首先調用,然后針對該異常的處理將會終結.

 

在View中獲取異常信息

  ASP.NET MVC框架將異常信息存儲在ViewDataDictionary中來傳遞給Error視圖,該ViewDataDictionary的Model屬性即是ExceptionContext類的一個實例,這個ViewData有下面幾個鍵:

  ActionName:目標Action方法的名稱

  ControllerName:目標Controller的名稱

  Exception:異常對象.

  啟用自定義錯誤處理

  下面我們來開啟用於HandleErrorAttribute過濾器的自定義錯誤處理,打開程序的Web.config文件,在system.web節中加入一個customErrors元素,如下所示

<system.web>  
 <customErrors mode="On" defaultRedirect="Error" /> 
</system.web>

處理Error視圖中的錯誤

  有時候在Error視圖中也會發生錯誤,這時ASP.NET將會顯示其默認的錯誤頁面(黃底紅字),為了避免這種情況的出現,我們在Web.config文件的customErrors節中來自定義錯誤頁面,如下:

<system.web>  
  <customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 
  <error statusCode="500" redirect="/Error.htm" /> 
  </customErrors> 
</system.web>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM