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