MVC3环境中的Global.asax方法中的访问会话

时间:2012-09-01 13:04:35

标签: asp.net-mvc-3 session razor

  

可能重复:
  Why HttpContext.Current.Session is null in Global.asax?

我正在开发一个MVC3项目(Razor) 我在一些Controller / Action(每个用户不同)中为我的会话添加了一个变量 我想在Application_AuthenticateRequest方法(global.asax)中访问此变量。

发生了这个例外:

  

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

Sample Project

2 个答案:

答案 0 :(得分:0)

首先,请参阅https://stackoverflow.com/a/4185982/717732

重点是Session不可用,而且在这个时间点根本就不可用:'时间'我的意思是“当这个事件被解雇时”。

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

AcquireRequestState事件期间,稍后准备了Session对象。这是您可以访问Session状态包并进行调查的第一个“时间”。

答案 1 :(得分: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();
        }