2011-04-18 134 views
0

我想在發生異常時重定向到錯誤頁面。在asp.net中發生異常時重定向到錯誤頁面?

如果代碼未在頁面中處理try{}catch(Exception ex){}並且Web應用程序中發生錯誤。然後我想重定向Error.aspx與異常詳細信息diplay。

我已經在Global.asax這樣的頁面中編寫了代碼。

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
    ' Code that runs when an unhandled error occurs 
    Dim str As String = CType(sender, HttpApplication).Context.Request.Url.ToString 
    Helper.ApplicationErrorHandler() 
End Sub 

Public Shared Sub ApplicationErrorHandler() 
    Dim ex As Exception 

    ex = HttpContext.Current.Server.GetLastError 

    Dim str As String = HttpContext.Current.Request.Url.ToString() 

    ' filter out 404 responses 
    Dim httpException = TryCast(ex, HttpException) 
    If httpException IsNot Nothing AndAlso httpException.GetHttpCode() = 404 Then 
     Return 
    End If 


    If TypeOf ex Is HttpUnhandledException AndAlso ex.InnerException IsNot Nothing Then 
     ex = ex.InnerException 
    End If 

    If (ex IsNot Nothing) Then 

     Dim msg As String = String.Format("An unhandled exception occurred:{0}Message: {1}{0}{0} Stack Trace:{0}{2}", System.Environment.NewLine, ex.Message, ex.StackTrace) 
     Utility.SendEMail("[email protected]", System.Configuration.ConfigurationManager.AppSettings("ErrorEmailRecipient"), msg, "Labor Error") 

    End If 
    HttpContext.Current.Session.Add("Error", ex.Message) 
    HttpContext.Current.Server.Transfer("error.aspx") 

End Sub 

它仍然是異常停止在錯誤的地方。它不會重定向到錯誤頁面。

Object reference not set to an instance of an object. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[NullReferenceException: Object reference not set to an instance of an object.] 
    Labor.AttributeProcess.Page_Load(Object sender, EventArgs e) in C:\Source Trunk\Labor\Labor\AttributeProcess.aspx.vb:23 
    System.Web.UI.Control.OnLoad(EventArgs e) +131 
    System.Web.UI.Control.LoadRecursive() +65 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2427 

如何處理?即使沒有嘗試抓取句柄,我也希望重定向到錯誤頁面。

回答

2

檢查web.config中的customErrors Element。您可以使用它來配置您的網站,以便在發生異常時重定向到其他頁面。

0

通過雅各布蓋德建議的鏈接不工作了,所以這裏就是答案,如果有人有一次跟我一樣,同樣的問題,下面的代碼複製Application_Error事件中在Global.asax裏面:

// After Handle the error. Clear It 
Server.ClearError(); 

// Clear rendered. Just if needed 
Response.Clear(); 

// Finally redirect, transfer 
Response.Redirect("~/ErrorViewer.aspx"); 
相關問題