基本設定

此示例將介紹如何為 404 Page Not Found 和 500 Server Error 建立自定義錯誤頁面。你可以擴充套件此程式碼以捕獲你需要的任何錯誤程式碼。

Web.Config 中

如果你使用的是 IIS7 及更高版本,請忽略 <CustomError.. 節點並改用 <httpErrors...

system.webServer 節點中新增以下內容:

<httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" />
    <remove statusCode="500" />
    <error statusCode="404" path="/error/notfound" responseMode="ExecuteURL" />
    <error statusCode="500" path="/error/servererror" responseMode="ExecuteURL" />
 </httpErrors>

這告訴網站將任何 404 錯誤導向~/error/notfound,將任何 500 錯誤導向~/error/servererror。它還會保留你請求的 URL(想想轉移而不是重定向 ),這樣使用者就永遠不會看到~/error/... 頁面 URL。

接下來,你需要一個新的 Error 控制器……

public class ErrorController : Controller
{
    public ActionResult servererror()
    {
        Response.TrySkipIisCustomErrors = true;
        Response.StatusCode = (int)HttpStatusCode.InternalServerError;
        return View();
    }

    public ActionResult notfound()
    {
        Response.TrySkipIisCustomErrors = true;
        Response.StatusCode = (int)HttpStatusCode.NotFound;
        return View();
    }

} 

這裡需要注意的關鍵是 Response.TrySkipIisCustomErrors = true;。這將繞過 IIS 並強制你的錯誤頁面通過。

最後,建立相應的 NotFoundServerError 檢視並對其進行樣式設定,以便與你的網站設計完美無瑕。

嘿 presto - 自定義錯誤頁面。