所以在 Global.asax 中是这样的:
protected void Application_Error(object sender, System.EventArgs { Session["CustomError"] = Server.GetLastError(); Server.ClearError(); Response.Redirect("~/ErrorPage.aspx"); }
在 ErrorPage.aspx 中是这样的:
private void Page_Load(object sender, System.EventArgs e) { Exception currentException = ((Exception)Session["CustomError"]).InnerException;
// 写入错误消息 if (currentException != null) txtErrorMessage.Text = currentException.Message;
// 遍历内部异常。currentException = (Exception)Session["CustomError"]; while (currentException != null) { message.Append(currentException.Message).Append("\r\n").Append(currentException.StackTrace); message.Append("\n============================================ ===\n"); currentException = currentException.InnerException; }
由于这是旧的 1.0 代码,因此在转换为 3.5 Global.asax 文件时会出错。它告诉我“会话”不可用,而且我无法重定向??我认为其中一个问题可能是 Application_Start 也抛出了一个错误。但是,如果我注释掉所有应用程序启动代码,我仍然会收到错误,但它们永远不会被重定向到错误页面。