如何将错误消息从一个aspx页面发送到其他aspx页面

本文关键字:aspx 页面 其他 一个 错误 消息 | 更新日期: 2023-09-27 18:21:29

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");
 }

如何将错误消息从一个aspx页面发送到其他aspx页面

在这种情况下,我更喜欢会话。然后,您可以保留包括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"];
}

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

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;
                    }
                }
 }