在Url Rewrite之后访问Master Page中的会话加载事件

时间:2010-07-15 10:24:56

标签: asp.net error-handling url-rewriting session-state

场合:

  • 在Web.Config中,我们使用redirectMode="ResponseRewrite"打开了CustomErrors。
  • 在我们的MasterPage的Page_Load中,我们访问Session的{​​{1}}属性。

问题:

当任何页面上发生错误时,用户会被重定向(通过重写)到我们的Error.aspx页面。在MasterPage的Page_Load中,我们访问Session并获得HttpException,告诉我们启用SessionState。但我们确实启用了SessionState。

问题:

我们如何在MasterPage的Page_Load事件中的UrlRewrite之后访问会话?

2 个答案:

答案 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>