我有一个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对象。
我在哪里做错了?
谢谢!
答案 0 :(得分:0)
您尝试访问的HttpContext
对象位于ASP.NET MVC的基类Controller
类中,该类未在控制器实例化时设置,而是稍后注入日期。
如果您希望在构造函数中访问HTTPContext对象,则需要使用Dependency Injection(建议的解决方案)通过IoC容器注入它,或者您可以直接访问上下文:
using SystemWebHttpContext = System.Web.HttpContext;
...
public LocationController()
{
var session = SystemWebHttpContext.Current.Session;
}