Hola compañeros...
Tengo un aplicación ASP.NET en donde se utiliza unas
variables de Session para guardar información sobre el
usuario que ingresó al sitio.
Para que tener una idea de lo que comento coloco un ejemplo:
'EJEMPLO DE LA PÁGINA LOGIN.ASPX
'Código en el evento Page_Load.
'Se supone que el usuario fue validado con contraseña
'
'el usuario digitado en la página
Session("UserName") = txtUserName.txt
'otros datos traidos de la base de datos tras verificación
Session("UserId") = CStr(DataReader("Id"))
Session("UserEmail") = CStr(DataReader("Email"))
Session("UserPhone") = CStr(DataReader("Phone"))
'FIN DEL EJEMPLO
Como pueden ver utilizo unas variables de Session común y
silvestre. Tal cual como lo hacemos a menudo.
Ahora el punto cruel.
Estoy haciendo un módulo HTTP con el fin de llevar una
serie de estadísticas del usuario que se logueó y las
páginas que visitó.
Para lo anterior, me engancho al evento BeginRequest, así:
'COMIENZA LA CLASE
Public Class TestModule
Implements IHttpModule
Public Sub Init(ByVal app As HttpApplication) _
Implements IHttpModule.Init
AddHandler app.BeginRequest, AddressOf MyApp_BeginRequest
End Sub
Public Sub Dispose() Implements IHttpModule.Dispose
'
End Sub
End Class
'FINALIZA LA CLASE
Ahora desde mi subrutina llamada MyApp_BeginRequest, la
cual es llamada en cada solicitud de página, intento
acceder a las variables de Session que les mostré arriba
(configuradas en la página LOGIN.ASPX).
Private Sub MyApp_BeginRequest
(ByVal s As [Object], ByVal e As EventArgs)
Dim app As HttpApplication = CType(s, HttpApplication)
Dim ctx As HttpContext = app.Context
Dim strUserName As String
'Aquí intento acceder por lo menos a la variable
'de Session que contiene el nombre del usuario, pero me
'generar error debido a que el objeto o miembro Session
'viene como Nothing.
strUserName = CStr(ctx.Session("UserName"))
End Sub
Como comentarié en el código inmediatamente anterior el
miembro Session viene a Nothing y por ende no puedo acceder
a las variables de Session creadas en la página ASPX.
¿Alguna idea del por qué esto?
¿Cómo podría hacer para acceder a dicho miembro?
Mil gracias.
Leer las respuestas