ASP.NET自定義錯誤頁並返回正確的500、404狀態碼

  在項目中,咱們經常須要自定義錯誤頁面,但每每返回的狀態碼都變成了200,對SEO很不友好。我嘗試過在百度上尋找解決方案,但找到的資料中說的方法都試過了,發現都是沒法返回正確的狀態碼的。架構

  最後,只好自已摸索了。通過屢次嘗試,總算實現了。如今把實現的方法總結出來,供你們參考:測試

  解決方法:spa

  在項目根目錄下新建Global.asax文件,並在Global.asax文件的Application_Error()方法中寫入相應的處理代碼便可,無需在Web.Config中作任何自定義錯誤頁面的設置。code

  提示:此方法僅在Web Form項目中測試可行。基於MVC架構的項目處理機制可能有所不一樣,則僅供思路參考。orm

    void Application_Error(object sender, EventArgs e)
    {
        HttpException error = Server.GetLastError() as HttpException;
        if (error != null)
        {
            var statusCode = error.GetHttpCode();
            if (statusCode == 500)
            {
                Response.StatusCode = 500;
                Server.ClearError();
                Server.Transfer("~/500.htm");
            }
            else if (statusCode == 404)
            {
                Response.StatusCode = 404;
                Server.ClearError();
                Server.Transfer("~/404.htm");
            }
            else if (statusCode == 403)
            {
                Response.StatusCode = 403;
                Server.ClearError();
                Server.Transfer("~/403.htm");
            }
        }

    }

 

效果圖:htm

相關文章
相關標籤/搜索