redirectMode="ResponseRewrite"
打开了CustomErrors。Page_Load
中,我们访问Session
的{{1}}属性。当任何页面上发生错误时,用户会被重定向(通过重写)到我们的Error.aspx页面。在MasterPage的Page_Load中,我们访问Session并获得HttpException,告诉我们启用SessionState。但我们确实启用了SessionState。
我们如何在MasterPage的Page_Load事件中的UrlRewrite之后访问会话?
答案 0 :(得分:1)
试试这个......
Why is HttpContext.Session null when redirectMode = ResponseRewrite
...摘录
我还不知道问题的答案,但是为了解决这个问题,我从我的web配置中取出了redirectMode属性,并将自定义逻辑放在Global.asax Application_Error处理程序中,以执行我想要的操作。我用“用户友好”消息异常替换异常,但实际上转移逻辑是:
if(Context.IsCustomErrorEnabled)
{
Server.Transfer("~/Error.aspx");
}
然后Error.aspx页面有Page_Load代码将错误拉出上下文并显示消息。
答案 1 :(得分:1)
我们最终得到的解决方案:
if( HttpContext.Current.Session != null )
{
//Access Session here...
}
我们可以这样做,因为我们在Session上获取的数据对于我们来说并不是必不可少的。
另请注意,访问HttpContext.Current.Session
不会引发HttpException
,而访问Page.Session
会。{/ p>