Asp.net 无法检索HttpContext.Current.Session状态中的值

Asp.net 无法检索HttpContext.Current.Session状态中的值,asp.net,asp.net-mvc-4,Asp.net,Asp.net Mvc 4,我有一个MVC4网络应用程序。我在Global.asax.cs文件中的mvcapapplication类的session_Start中定义的会话中保存了一个值 我想从控制器中检索该值。但它抛出了一个错误 protected void Session_Start(Object sender, EventArgs e) { int temp = 0; HttpContext.Current.Session.Add("_SessionCo

我有一个MVC4网络应用程序。我在Global.asax.cs文件中的mvcapapplication类的session_Start中定义的会话中保存了一个值

我想从控制器中检索该值。但它抛出了一个错误

protected void Session_Start(Object sender, EventArgs e)
        {
            int temp = 0;
            HttpContext.Current.Session.Add("_SessionCompany", temp);
            Debug.WriteLine("session started");
        }
在控制器的构造函数中:

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似乎是空对象

我哪里做错了

谢谢

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

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

using SystemWebHttpContext = System.Web.HttpContext;

...

public LocationController()
{
    var session = SystemWebHttpContext.Current.Session;
}
可能重复的