2010-09-13 54 views
8

Sesión en método Application_AuthenticateRequest en Global.asax es siempre null.Ive ya se trate:sesión de ASP.NET en Global.asax

this.Session,HttpContext.Current.Session 

siempre nula.

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 también trato de usar la memoria caché, pero no funciona porque necesito información única para cada usuario.

Cómo usar Session en Global.asax? ¿La aplicación HttpApplication es única para cada usuario?

+0

id es probable que no llame a ese método correctamente. El motivo de NULL se produce cuando no se procesa ninguna solicitud. ¿Cómo llamas a ese método/asignando a ese delegado? – RPM1984

+0

Llamando Application_AuthenticateRequest? Se dispara automáticamente cuando un usuario intenta autenticarse; – ozsenegal

Respuesta

13

Simplemente no puede utilizar la Sesión en este momento del ciclo de vida de la solicitud, todavía no está disponible/poblada; si desea usarla, tendrá que pasar a un evento más adelante en el ciclo de vida, por ejemplo PostAcquireRequestState.

Cuestiones relacionadas