我使用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"; } }