[ASP.NET MVC] Error Handling(1) – 當網站發生錯誤時導向到自訂頁面

[ASP.NET MVC] Error Handling(1)–Custom Errors

當有錯誤發生時,可能會影響到我們的網站,為了讓影響減到最小,我們必須知道如何正確的處理錯誤。

來看一個簡單的例子


public ActionResult About()
{
    ViewBag.Message = "您的應用程式描述頁面。";
    throw new Exception("Something went wrong!");
}

我們丟出了一個Exception,卻沒有去處理它,當程式執行時,會發生什麼事?

擷取

OK,發生錯誤了,現在該怎麼辦?

首先要知道的是,在ASP.NET 裡面,有一個叫 custom errors 的功能,它可以幫助我們處理錯誤。

custom errors 提供了三個模式:

  1. On:當有錯誤發生時就顯示我們自訂的頁面。
  2. Off:當有錯誤發生時就顯示預設的頁面,就是上面那個黃色的頁面。
  3. RemoteOnly:如果是從主機連上去,就顯示預設的錯誤頁面,這是為了幫助開發者Debug。如果是 User 從其他地方連的,就顯示自訂的頁面給他們看。

那這要在哪裡設定?  

在 Web.config 裡的 <system.web> 的底下新增


<customErrors mode="On"> 
</customErrors>

再執行一次程式,這次沒有再出現黃色的錯誤頁面了。

擷取2

這個畫面是 Shared 資料夾底下的 Error.cshtml 頁面。