2010-09-13 18 views
8

Session Application_AuthenticateRequest metodo in Global.asax è sempre null.Ive già provate:sessione ASP.NET in Global.asax

this.Session,HttpContext.Current.Session 

sempre nullo.

protected void Application_AuthenticateRequest() 
    { 
     string userRole = string.Empty; 

     if (Request.IsAuthenticated) 
     { 
      if (this.Session["UserRole"] == null) 
      { 
       InsertSessionValue(); 
      } 
      userRole =Session["UserRole"].ToString(); 
      HttpContext.Current.User = new GenericPrincipal(User.Identity, new string[] {userRole}); 
     } 
    } 

Ive anche provare ad usare la cache, ma pretende molto lavoro, perché ho bisogno di informazioni uniche per ciascun utente.

Come utilizzare Session in Global.asax? La proprietà dell'applicazione HttpApplication è univoca per ciascun utente?

+0

id è probabile che tu non stia chiamando questo metodo correttamente. Il motivo per il NULL si verifica quando non viene elaborata alcuna richiesta. Come stai chiamando quel metodo/assegnando quel delegato? – RPM1984

+0

Chiamare Application_AuthenticateRequest? Si attiva automaticamente quando un utente tenta di autenticare; – ozsenegal

risposta

13

Non è possibile utilizzare Session a questo punto del ciclo di vita della richiesta, non è ancora disponibile/popolato, se si desidera utilizzarlo è necessario passare a un evento più avanti nel ciclo di vita, ad esempio PostAcquireRequestState.