2015-01-13 4 views
6

У меня есть следующий код в моем Global.asaxASP.NET MVC session имеет значение null. Переменные сеанса не установлено

protected void Application_AcquireRequestState(object sender, EventArgs e) 
{   
    if (HttpContext.Current.Handler is IRequiresSessionState) 
    { 
     if (Request.IsAuthenticated) 
     { 
      if (HttpContext.Current.Session[this.MemberShipProvider.PrincipalSessionKey] != null) 
      { 
       CxPrincipal principal; 
       try 
       { 
        principal = (CxPrincipal)HttpContext.Current.Session[this.MemberShipProvider.PrincipalSessionKey]; 
       } 
       catch 
       { 
        principal = null; 
       } 

       HttpContext.Current.User = principal; 
       Thread.CurrentPrincipal = principal; 
      } 
      else 
      { 
       var identity = new CxIdentity("admin", 1, "", true); 
       CxPrincipal principalLogin = new CxPrincipal(identity, 1); 
       HttpContext.Current.Session[this.MemberShipProvider.PrincipalSessionKey] = principalLogin; 
       HttpContext.Current.Session[SessionName.CurrentUser] = "Admin User"; 
       HttpContext.Current.User = principalLogin; 
       Thread.CurrentPrincipal = principalLogin; 
       this.FormServiceProvider.SignIn("admin", false); // this is equal to FormsAuthentication.SetAuthCookie 

      } 
     } 
    } 
} 

Проблема в том, что каждый раз, когда Сессия является объектом является недействительным. Не только здесь, я не могу использовать сеансы и в своем приложении. Либо сеанс сбрасывается, либо что-то в этом роде.

Мое приложение не требует больше времени, Поэтому я не использую Session.Clear или Session.Abandon где-нибудь в моем приложении.

Пожалуйста, помогите мне, почему моя переменная сеанса не установлена?

+0

возможно дубликат [Благоприятная состояния сеанса в ASP.NET MVC] (http://stackoverflow.com/questions/ 2620520/enable-session-state-in-asp-net-mvc) – Krumelur

+0

Что вам сказала ваша отладка? –

+0

@AntP в отладке, у меня есть объект session, но переменные не заданы. – progrAmmar

ответ

3

Вы должны реализовать (и м.б. оставить пустым) 2 методы в вашем global.asax.cs:

void Session_Start(object sender, EventArgs e) 
    { 
    } 

    void Session_End(object sender, EventArgs e) 
    { 

    } 
+1

Реализация их пустым не помогла, я просто передал связанный с сеансом код в начало сеанса, и он работал как шарм: D. благодаря – progrAmmar

Смежные вопросы