2010-03-03 31 views
15

Ho configurato il mio file Web.Config come segue in un progetto ASP.NET MVC 2:Quando si chiama Session_End() in ASP.NET MVC?

<sessionState mode="InProc" timeout="1"/> 

E ha aggiunto quanto segue in Global.asax.cs:

protected void Session_End(object sender, EventArgs e) 
{ 
    System.Diagnostics.Debug.WriteLine("Session_End"); 
} 

protected void Session_Start(object sender, EventArgs e) 
{ 
    System.Diagnostics.Debug.WriteLine("Session_Start"); 
} 

Session_Start() viene chiamato quando un nuovo utente va sul sito web. Mi sarei aspettato che Session_End() venisse chiamato dopo 1 minuto di inattività, ma non è il caso. Mi sto perdendo qualcosa?

risposta

8

Sii paziente. L'evento dovrebbe essere chiamato, ma non necessariamente subito dopo il timeout.

Si potrebbe provare da un browser: Avviare una sessione, attendere> 1 minuto, fare un postback in qualche modo

Ciò dovrebbe contribuire a verificare che le opere di timeout e penso che si vedrà anche la SessionEnd accadendo in quel momento . Altrimenti, aspetta e inizia qualche altra sessione. Il sistema arriverà o chiamandolo qualche volta.

+0

Interessante, avrei pensato che sarebbe lo chiamano proprio al 1 ° minuto –

1

Suggerimento per il test: Utilizzare Session.Abandon in modo da non dover compromettere il valore effettivo di web.config. Basta non impostare un valore di sessione e chiamare Session.Abandon durante la stessa richiesta o non verrà memorizzato.

Ecco un articolo con un po 'di informazioni su session_end

8

ricordare questo:

Se non salvare nulla nella sessione, il Session_End no fuoco. Se si stanno salvando i dati nella sessione nella prima richiesta e si chiama abbandono nella stessa richiesta anche il session_end non viene attivato.

Spero che questo aiuti!

T

btw: ASP.NET Session_End event not firing

Problemi correlati