2010-03-03 8 views
15

J'ai configuré mon fichier Web.Config comme suit dans un projet ASP.NET MVC 2:Quand Session_End() est appelée dans ASP.NET MVC?

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

Et ajouté ce qui suit dans 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() est appelée lorsqu'un nouvel utilisateur va sur la site Internet. Je m'attendais à être appelé Session_End() après 1 minute de temps d'inactivité, mais ce n'est pas le cas. Est-ce que je manque quelque chose?

Répondre

8

Soyez patient. L'événement doit être appelé, mais pas nécessairement juste après le timeout.

Vous pouvez essayer à partir d'un navigateur: Démarrer une session, attendez> 1 minute, faire Postback en quelque sorte

Cela devrait aider à vérifier que les travaux de délai d'attente et je pense que vous verrez aussi le SessionEnd qui se passe à ce moment-là . Sinon, attendez et commencez d'autres sessions. Le système viendra l'appeler o parfois.

+0

Intéressant, je l'aurais pensé qu'il appellerions droit à la marque 1 minute –

1

Astuce pour le test: Utilisez Session.Abandon pour ne pas avoir à modifier votre valeur web.config. Il suffit de ne pas définir une valeur de session et d'appeler le Session.Abandon lors de la même requête, sinon il ne sera pas stocké.

Voici un article avec un peu plus d'informations sur les session_end

8

Rappelez-vous ceci:

Si vous ne sauvegardez pas quoi que ce soit dans la session, le Session_End ne sera pas feu. Si vous sauvegardez des données dans la session dans la première requête, et appelez abandonner dans la même requête, la session_end ne sera pas non plus déclenchée.

Espérons que cela aide!

T

BTW: ASP.NET Session_End event not firing

Questions connexes