Foros del Web » Programación para mayores de 30 ;) » .NET »

Como Gatillar el Session_End()??

Estas en el tema de Como Gatillar el Session_End()?? en el foro de .NET en Foros del Web. Hola, Tengo una duda como puedo gatillar el Session_End(); estoy haciendo pruebas simples al cargar la pagina 1 declaro esto. <<Default1.aspx>> protected void Page_Load(object sender, ...
  #1 (permalink)  
Antiguo 11/06/2008, 14:24
 
Fecha de Ingreso: noviembre-2006
Mensajes: 35
Antigüedad: 17 años, 6 meses
Puntos: 0
Como Gatillar el Session_End()??

Hola,

Tengo una duda como puedo gatillar el Session_End(); estoy haciendo pruebas simples al cargar la pagina 1 declaro esto.
<<Default1.aspx>>
protected void Page_Load(object sender, EventArgs e)
{
Session["SesionActiva"] = "1";
}

En mi archivo Web.Config, tengo esto
<sessionState mode="InProc" timeout="1" ></sessionState>

y en el archivo Global.asax tengo esto;
void Session_End(object sender, EventArgs e)
{
Response.Redirect("Default2.aspx");
}

El tema es que pasa el minuto y no pasa nada, no me redirige a la Default2.aspx, tengo que configurar algo mas en el Web.config...

Por fa necesito ayuda,
Mi proposito es que cuando se le acabe el tiempo lo redirija a una 2 pagina. Nota no puede ser javascript ya que en el Session_End() pretendo realizar unos procesos de registro en una base de datos.

Gracias a todos.

PD: Esto debe estar si o si en un servidor IIS para que funcione???? (A lo que voy, es que esto no sirve si lo estoy ejecutando con el sitio administrador por el framework??)

Última edición por MKPopper; 11/06/2008 a las 14:26 Razón: Agregar el PD
  #2 (permalink)  
Antiguo 13/06/2008, 08:25
Avatar de gustavoh10  
Fecha de Ingreso: diciembre-2005
Ubicación: ARGENTINA
Mensajes: 196
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Como Gatillar el Session_End()??

Hola, lo que pasa es que no podes hacer un Response.Redirect(""); desde el evento Session_End en el Global.asax.

Una solucion podria ser que verifiques la variable
Session["SesionActiva"] = "1";
en el page_load de cada pagina y veas si existe. Si no existe quiere decir que la session expiro y ahi redireccionas a la pagina que quieras,

ejemplo

//Clase Controladora de la session
Código PHP:

public class ManejaSession System.Web.UI.Page
{
        protected 
virtual void Page_Load(object senderEventArgs e)
        {
            
String activa = (String)Session["SesionActiva"] = "1";
            if (
activa == null)
            {                
                
Response.Redirect("Login.aspx");
            }
        }

//Pagina aspx
Código PHP:
//Sobreescribis el metodo page_load
public partial class Default : ManejaSession
{
    protected 
override void Page_Load(object senderEventArgs e)
    {
        
base.Page_Load(sendere);
    }

Simplemente haces que tus paginas aspx hereden del manejador de session que verificara si esta activa o no la session.

Esta es una solución, capas encotras una mejor
espero que te sirva

Saludos!
  #3 (permalink)  
Antiguo 13/06/2008, 08:35
Avatar de gustavoh10  
Fecha de Ingreso: diciembre-2005
Ubicación: ARGENTINA
Mensajes: 196
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Como Gatillar el Session_End()??

El problema con Response.Redirect es que solo funciona cuando se realizar un request y el evento Session_End se dispara automaticamente.
Podrias probar con Response.Transfer(""), pero casi seguro tenes el mismo problema
  #4 (permalink)  
Antiguo 13/06/2008, 09:04
 
Fecha de Ingreso: octubre-2007
Mensajes: 107
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Como Gatillar el Session_End()??

El evento session_end solo se dispara cuando el usuario vuelve a interactuar con la pagina o se refresca la pagina automaticamente ya sea con un timer o de otra forma
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 06:42.