我使用ASP.NET MVC,我需要在Application_BeginRequest设置一个会话变量。问题是,在这一点对象HttpContext.Current.Session总是null。
protected void Application_BeginRequest(Object sender,EventArgs e)
{
if (HttpContext.Current.Session != null)
{
//this code is never executed,current session is always null
HttpContext.Current.Session.Add("__MySessionVariable",new object());
}
}
解决方法
在Global.asax中尝试AcquireRequestState。会话在此事件中可用,针对每个请求触发:
void Application_AcquireRequestState(object sender,EventArgs e)
{
// Session is Available here
HttpContext context = HttpContext.Current;
context.Session["foo"] = "foo";
}
Valamas – 建议修改:
与MVC 3成功地使用它,并避免会话错误。
protected void Application_AcquireRequestState(object sender,EventArgs e)
{
HttpContext context = HttpContext.Current;
if (context != null && context.Session != null)
{
context.Session["foo"] = "foo";
}
}
