Foros del Web » Programando para Internet » ASPX (.net) »

Existe algún evento en Global.asax para...

Estas en el tema de Existe algún evento en Global.asax para... en el foro de ASPX (.net) en Foros del Web. Buenos días. Sabemos que el evento Session_Start se ejecuta cada vez que hay una sesión nueva en la aplicación. También sabemos que el evento Session_End ...
  #1 (permalink)  
Antiguo 11/10/2010, 09:53
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Existe algún evento en Global.asax para...

Buenos días.
Sabemos que el evento Session_Start se ejecuta cada vez que hay una sesión nueva en la aplicación.
También sabemos que el evento Session_End se ejecuta cada vez que finaliza una sesión (ahora no entraremos en detalles de si: "no siempre entra", "si se cierra la ventana del navegador no entra", etc...)
Mi pregunta es:
¿Existe algun evento que se ejecute cada vez que el usuario hace un Request? Independientemente de si es el primero (Session_Start) o el último (Session_End)...
Ah por cierto, desde ese evento, si es que existe, tengo que acceder a unas variables de sesion, cosa que también he podido comprobar que no es posible desde todos los eventos de Global.asax, solamente desde alguno como Session_Start.
Gracias.
__________________
..:: moNTeZIon ::..
  #2 (permalink)  
Antiguo 12/10/2010, 02:35
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Existe algún evento en Global.asax para...

Existe el evento Application_BeginRequest. Para acceder a los objetos de sesión tendrás que hacerlo a través de HttpContext.Current.Session.

El evento Application_BeginRequest lo uso a veces para controlar todo el tráfico que entre y redirigir a una página específica no controlada por ASP.Net cuando por ejemplo desactivo temporalmente el sitio por mantenimiento.

Espero que te sirva.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #3 (permalink)  
Antiguo 12/10/2010, 11:27
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Existe algún evento en Global.asax para...

Hola Bravenap!
Gracias por responder.
La verdad es que BeginRequest forma parte de los eventos que comenté, que no tienen acceso a la sesión.
He probado lo siguiente con sus correspondientes errores:

HttpContext.Current.Session("pepe") = 1
Referencia a objeto no establecida como instancia de un objeto.

Session("pepe") = 1
El estado de sesión no está disponible en este contexto.

La verdad es que se me ha ocurrido heredar todas las páginas del sitio de una sola clase que herede de Page. Y en el Page_Load de esa Clase realizo las comprobaciones que necesito.
Para lo que necesitaba ya me sirve, aunque me quedo con el misterio del global.asax
Un saludo!
__________________
..:: moNTeZIon ::..
  #4 (permalink)  
Antiguo 13/10/2010, 00:58
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Existe algún evento en Global.asax para...

El error puede deberse a que (no estoy seguro) el evento Application_BeginRequest se ejecute antes que Session_Start, por lo que al no haberse creado la sesión todavía te lanza el error.
Prueba a verificar que existe para acceder a ella. Puede que en una segunda petición ya se haya creado la sesión y no te lance el error:

Código vb:
Ver original
  1. Sub Application_BeginRequest (...)
  2.   If Not HttpContext.Current.Session Is Nothing Then
  3.     HttpContext.Current.Session("pepe") = 1
  4.   End If
  5. End Sub
Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 13/10/2010, 02:38
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Existe algún evento en Global.asax para...

Hola de nuevo.
Lo que comentas funciona para evitar el error, pero nunca entra en ese IF.

Código VB.NET:
Ver original
  1. If Not HttpContext.Current.Session Is Nothing Then
  2.   HttpContext.Current.Session("pepe") = 1
  3.   Response.Redirect("http://www.google.com")
  4. End If

He hecho las pruebas con este código y nunca me ha redirigido a la página de Google. Si saco el Redirect del IF llego a Google sin problemas.
Yo diría que estos eventos no permiten acceso a la sesión, ya me había encontrado antes.
Saludos.
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 13/10/2010 a las 02:45

Etiquetas: existe, eventos, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:07.