1

可能重复:
为什么 HttpContext.Current.Session 在 Global.asax 中为空?

我正在开发一个 MVC3 项目(Razor)。
我在一些控制器/操作中向我的会话添加了一个变量(每个用户不同)。
我想在Application_AuthenticateRequest方法(global.asax)中访问这个变量。

发生了这个异常:

会话状态在此上下文中不可用。

示例项目

4

2 回答 2

0

有关开始,请参阅https://stackoverflow.com/a/4185982/717732

关键是它Session不可用,并且在这个时间点永远不会可用:“时间”是指“当这个事件被触发时”。

例如在 devproconnections.com/article/aspnet2/ 上阅读生命周期

Session 对象是在很晚才准备好的:在AcquireRequestState活动期间。这是您第一次可以访问 Session 状态包并对其进行调查。

于 2012-09-01T13:27:52.823 回答
0

谢谢 quetzalcoatl,这是真的。

      try
        {                
            if (Session != null)
            {
                if (Session["mys"] != null)
                {
                    //Error
                    string s = HttpContext.Current.Session["mys"].ToString();
                }
                else
                {
                    Response.Redirect("~/Home/Index");
                    Response.End();
                }
            }
        }
        catch {
            Response.Redirect("~/Home/Index");
            Response.End();
        }
于 2012-09-01T13:39:02.207 回答