1. 激活異常過濾器
當自定義異常被捕獲時,異常過濾器變爲可用。爲了能夠獲得自定義異常,打開Web.config文件,在System.Web.Section下方添加自定義錯誤信息。
<system.web>
<customErrors mode="On"></customErrors>
</system.web>
2. 創建Error View
在“~/Views/Shared”文件夾下,會發現存在“Error.cshtml”文件,該文件是由MVC 模板提供的,如果沒有自動創建,該文件也可以手動完成。
3. 綁定異常過濾器
將過濾器綁定到action方法或controller上,不需要手動執行,打開 App_Start folder文件夾中的 FilterConfig.cs文件。在 RegisterGlobalFilters 方法中會看到
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); //filters.Add(new AuthorizeAttribute()); } }
如果需要刪除全局過濾器,那麼會將過濾器綁定到action 或controller層,如下:
[AdminFilter]
[HandleError]
public async Task<ActionResult> Upload(FileUploadViewModel model)
但是不建議這麼做,最好是在全局中應用
4. 在View中顯示錯誤信息
將Error View轉換爲HandleErrorInfo類的強類型View,並在View中顯示錯誤信息。
@model HandleErrorInfo @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width" /> <title>錯誤</title> </head> <body> <hgroup> <h1>錯誤。</h1> <h2>處理你的請求時出錯。</h2> </hgroup> Error Message :@Model.Exception.Message<br /> Controller: @Model.ControllerName<br /> Action: @Model.ActionName </body> </html>
5. 運行後故意出錯,顯示的卻是http服務器內部500錯誤,並不顯示Error中的自定義錯誤信息。解決辦法:
在IE瀏覽器下點擊 工具-internet選項-高級,滾動條拉到最後,將“顯示友好HTTP錯誤信息”前的勾去掉,確定,這時刷新“500內部服務器錯誤”頁面,或者重新啓動該頁面,頁面便會彈出新的報錯項目,這是網頁報錯的信息便會告訴你是原因導致此錯誤發生。