我重现了这个问题,但我不明白为什么会这样。在Application_Error
处理程序中,我可以访问 Session 变量,但是当页面加载时它变成null
.
我在这里找到了解决问题的解决方法。您需要redirectMode
从 web.config 中删除 并在Server.Transfer
出现错误时手动执行。所以这是 web.config:
<customErrors mode="On" defaultRedirect="~/Error.aspx"/>
并将其添加到Global.asax.cs
文件中:
void Application_Error(object sender, EventArgs e)
{
if(Context.IsCustomErrorEnabled)
{
Server.Transfer("~/Error.aspx");
}
}
要根据错误指定不同的错误页面,您可以像这样访问错误代码:
HttpException httpException = (HttpException) Server.GetLastError();
int httpCode = httpException.GetHttpCode();
switch (httpCode)
{
case 500: Server.Transfer("~/Pages/Error.aspx");break;
case 404: Server.Transfer("~/Pages/PageNotFound.aspx");break;
default: Server.Transfer("~/Pages/Error.aspx");break;
}