在Asp.Net的Global.asax中Application_Error跳轉到自訂錯誤頁無效的辦法

來源:互聯網
上載者:User

標籤:

在開發Asp.Net系統的時候,我們很多時候希望系統發生錯誤後能夠跳轉到一個自訂的錯誤頁面,於是我們經常會在Global.asax中的Application_Error方法中使用Response.Redirect方法跳轉到自訂錯誤頁,但有時候(特別是當網站部署到IIS後)Application_Error方法中使用Response.Redirect方法會失效,當Asp.Net發生異常錯誤後還是顯示出來的是Asp.Net的預設錯誤黃頁。其根本原因是儘管我們在Application_Error方法中使用了Response.Redirect方法,但是當系統發生異常錯誤後Asp.Net認為異常並沒有被處理,所以Asp.Net不會跳轉到Application_Error方法中Response.Redirect指向的頁面,還是會最終會跳轉到Asp.Net的預設錯誤黃頁。解決這個問題的辦法很簡單就是在Application_Error方法中使用Response.Redirect做跳轉前,先調用Server.ClearError()方法告訴Asp.Net系統發生的異常錯誤已經被處理了,這樣再調用Response.Redirect方法系統就會跳轉到自訂錯誤頁面了。

 

下面是一段範例程式碼:

 1 using System; 2 using System.Web; 3 using System.Web.Mvc; 4 using System.Web.Routing; 5 using System.Web.Http; 6  7 namespace RedirectToErrorPage 8 { 9     public class Global : HttpApplication10     {11         void Application_Start(object sender, EventArgs e)12         {13             // Code that runs on application startup14             AreaRegistration.RegisterAllAreas();15             GlobalConfiguration.Configure(WebApiConfig.Register);16             RouteConfig.RegisterRoutes(RouteTable.Routes);            17         }18 19         //儘管我們在Global.asax的Application_Error方法中使用了Response.Redirect方法做頁面重新導向,但是當系統發生錯誤時Asp.Net認為錯誤沒有被處理,所以最後頁面還是會被重新導向到Asp.Net的預設錯誤黃頁,而不會跳轉到我們在Application_Error方法中用Response.Redirect指向的頁面。20         protected void Application_Error(object sender, EventArgs e)21         {22             Server.ClearError();//在Global.asax中調用Server.ClearError方法相當於是告訴Asp.Net系統拋出的異常已經被處理過了,不需要系統跳轉到Asp.Net的錯誤黃頁了。如果想在Global.asax外調用ClearError方法可以使用HttpContext.Current.ApplicationInstance.Server.ClearError()。23             Response.Redirect("~/ErrorPage.html", true);//調用Server.ClearError方法後再調用Response.Redirect就可以成功跳轉到自訂錯誤頁面了24         }25 }

 

在Asp.Net的Global.asax中Application_Error跳轉到自訂錯誤頁無效的辦法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.