asp.net mvc4中自定義404頁面


原文地址:http://www.chuchur.com/asp-net-mvc4-404/

定義404 方法當然有很多種。不同的方法所展現的形式也不一樣,用戶所體驗也不一樣。以下提供2兩種

方法一:

1. 在web.config 中找到節點<system.web>中啟用404配置

<customErrors defaultRedirect="~/Error" mode="On" redirectMode="ResponseRedirect">
<error redirect="/Error" statusCode="404" />
</customErrors>

2.定義一個 controllers Error(這個隨你) ,在action中如下定義

public ActionResult Index()
{
    Response.Status = "404 Not Found";
    Response.StatusCode = 404;
    return View();
}

這種方式 默認為給你的url加上 ?aspxerrorpath=/ eg:http://localhost/Error??aspxerrorpath=/123456 故不推薦試用

 

方法二:

打開 Global.asax 文件 定義錯誤轉向地址(controller/action)

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
    if (ex is HttpException && ((HttpException)ex).GetHttpCode() == 404)
    {
        Response.Redirect("/Error");
    }
}
 
        

注意事項:在開發時候,我們經常會在 Global.asax 中的 Application_Error 方法中使用 Response.Redirect 方法跳轉到自定義錯誤頁,但有時候(特別是當站點部署到IIS后)Application_Error 方法中使用 Response.Redirect 方法會失效,當發生異常錯誤后還是顯示的默認錯誤黃頁。其根本原因是盡管我們在 Application_Error 方法中使用了 Response.Redirect 方法,但是當系統發生異常錯誤后 Asp.Net 認為異常並沒有被處理,所以不會跳轉到 Application_Error 方法中 Response.Redirect 指向的頁面,最終還是會跳轉到默認錯誤黃頁。解決這個問題的辦法很簡單就是在 Application_Error 方法中使用 Response.Redirect 做跳轉前,先調用 Server.ClearError() 方法告訴系統發生的異常錯誤已經被處理了,這樣再調用 Response.Redirect 方法系統就會跳轉到自定義錯誤頁面了。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM