簡體   English   中英

ASP.NET MVC中的全局錯誤處理。可能?

[英]Global error handling in ASP.NET MVC. Possible?

似乎Global.asax中的Application_Error只捕獲MVC運行時生成的錯誤。 還有其他涉及覆蓋Controller.OnException的解決方案。

是否有可能從所有控制器(包括我的代碼生成的控制器)創建一個能夠捕獲所有錯誤的錯誤處理程序?

是 - 如果您查看Global.asax, HandleErrorAttribute將添加到GlobalFilterCollection

        filters.Add(new HandleErrorAttribute());

但是默認的HandleErrorAttribute將只處理內部服務器錯誤,即所有不是HttException的異常和錯誤代碼為500的HttpExceptions。您可以從該屬性派生以處理所有異常並進一步自定義默認行為。

HandleErrorAttribute是asp.net mvc中標准的錯誤處理方式。

就像archil所說的那樣,你甚至不需要用[HandleError]來裝飾控制器/動作,因為它默認是打開的(在MVC3中)。

出錯時,它將返回Error.cshtml視圖,如果您使用項目模板,則該視圖位於Views / Shared中。

如果需要,您可以稍微自定義它,模型是HandleErrorInfo,因此您可以將控制器名稱,操作,消息和堆棧跟蹤拉出來,如果您想要一個漂亮的自定義異常消息。 這里有一個問題:你不能在這個頁面上有任何邏輯/操作。

而且您必須在Web.config中啟用自定義錯誤,否則您將獲得標准的黃色屏幕:

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

在customErrors中,您可以定義一個靜態回退頁面,以防其他所有內容失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM