ASP.net MVC自訂錯誤處理頁面的方法

來源:互聯網
上載者:User
在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>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.