如何将错误消息从一个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");
}
在这种情况下,我更喜欢会话。然后,您可以保留包括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;
}
}
}