如何从一个aspx页面发送错误消息到另一个aspx页面?

时间:2015-11-10 09:42:23

标签: c# asp.net

protected void Application_Error(object sender, EventArgs e)     
{
       Exception ex = this.Server.GetLastError();   
       this.Server.ClearError();    
       string errorMessage = ex.Message;   
       logger.Error(errorMessage, ex);    
       Response.Redirect("~/Error.aspx");
 }

2 个答案:

答案 0 :(得分:0)

在这种情况下,我更喜欢会话。然后,您可以保留完整的异常,包括stacktrace以进行进一步处理。但您无法直接在Application_Error中访问会话。这应该有效:

private void Application_Error(object sender, EventArgs e)
{
    Exception ex = this.Server.GetLastError();   
    // ...
    HttpApplication application = (HttpApplication)sender;
    HttpContext context = application.Context;
    context.Session["LastError"] = ex;
    Response.Redirect("~/Error.aspx");
}

现在您可以通过以下方式访问Error.aspx中的例外:

protected void Page_Load(Object sender, EventArgs e)
{
    Exception ex = (Exception)Session["LastError"];
}

答案 1 :(得分:0)

我认为您可以在Server.Transfer中使用Global.asax

void Application_Error(object sender, EventArgs e)
  {
                    // Code that runs when an unhandled error occurs

                    //direct user to error page 
                    Server.Transfer("~/Error_Pages/ErrorPage500.aspx");
  }

在错误页面中,您可以获取内部异常以检查实际发生的异常:

protected void Page_Load(object sender, EventArgs e)
  {
                LoadError(Server.GetLastError());
  }

protected void LoadError(Exception objError)
  {
                Exception innerException = null;           
                if (objError != null)
                {
                    if (objError.InnerException != null)
                    {
                        innerException = objError.InnerException;
                    }
                }
 }