无法在HttpContext.Current.Session状态中检索该值

时间:2014-11-21 11:57:58

标签: asp.net asp.net-mvc-4

我有一个MVC 4网络应用程序。我在" Session_Start"中定义的会话中保存了一个值。在Global.asax.cs文件中的MvcApplication类中。

我想从Controller中检索值。但它抛出了一个错误。

protected void Session_Start(Object sender, EventArgs e)
        {
            int temp = 0;
            HttpContext.Current.Session.Add("_SessionCompany", temp);
            Debug.WriteLine("session started");
        }

在Controller的构造函数中:

public LocationController()
        {
            if (HttpContext.Session == null)
                Debug.WriteLine("session is null");
            //this.HttpContext.Session["_SessionCompany"] = (int)this.Session["_SessionCompany"] + 1;
            //Debug.WriteLine("LocationController instantiated - " + (int)this.Session["_SessionCompany"]);
        }

错误发生在HttpContext:

System.NullReferenceException: Object reference not set to an instance of an object.

似乎HttpContext是null对象。

我在哪里做错了?

谢谢!

1 个答案:

答案 0 :(得分:0)

您尝试访问的HttpContext对象位于ASP.NET MVC的基类Controller类中,该类未在控制器实例化时设置,而是稍后注入日期。

如果您希望在构造函数中访问HTTPContext对象,则需要使用Dependency Injection(建议的解决方案)通过IoC容器注入它,或者您可以直接访问上下文:

using SystemWebHttpContext = System.Web.HttpContext;

...

public LocationController()
{
    var session = SystemWebHttpContext.Current.Session;
}