在我的全局中,当发生错误时,我有以下代码要处理
//[..] code goes here
Server.Transfer("~/Error.aspx?ErrorID=" + errorId);
它曾经是一个Response.Redirect
完美的工作,除了它改变了网址(这就是我想使用的原因Server.Transfer
)
不幸的是,现在当它尝试加载错误页面时,当它尝试引用Session
HttpException:
会话状态只能在 enableSessionState 设置为 true 时使用,无论是在配置文件中还是在 Page 指令中。还请确保 System.Web.SessionStateModule 或自定义会话状态模块包含在应用程序配置的 \\ 部分中。
我的配置和页面中都有 enableSessionState 。
我还发现了一些建议使用 Context.RewritePath 的链接——这只会为我加载一个空白页面。
使用Response.Redirect
完美且符合预期,所以我认为Server.Transfer
这是这里的问题。它是什么?
编辑代码:
protected void Application_Error(object sender, EventArgs e)
{
lock (_lockMe)
{
Exception ex = Server.GetLastError();
if (ex != null)
{
if (ex.InnerException != null)
ex = ex.InnerException;
ErrorLoggingManager.AddError(ex, new MembershipData(), ...); //etc
}
Server.ClearError();
//Some other database code for cleaning up some stuff when an error happens
}
try
{
if (Response != null)
{
//Get the last error logged
MyDataContext db = new MyDataContext();
int errorId = db.LoggedErrors.OrderByDescending(le => le.ErrorId).Select(le => le.ErrorId).FirstOrDefault();
Server.Transfer("~/Error.aspx?ErrorID=" + errorId);
}
}
catch (Exception)
{
}
}