2009-06-25 6 views
6

Je pose cette question par curiosité.Pourquoi l'événement Session_End n'est pas déclenché lorsque StateProvider n'est pas InProc?

Je l'ai remarqué dans mon global.asax

void Session_End(object sender, EventArgs e) 
{ 
    // Code that runs when a session ends. 
    // Note: The Session_End event is raised only when the sessionstate mode 
    // is set to InProc in the Web.config file. If session mode is set to StateServer 
    // or SQLServer, the event is not raised. 
} 

Je veux comprendre pourquoi l'événement Session_End n'est pas capturé/levé lorsque le mode de session est StateServer ou SQLServer?

Répondre

10

parce que le ASP.NET Session State ce n'est pas en mémoire plus ...

lors de l'utilisation d'un processus différent pour stocker l'état de session, le IIS ne sait pas (parce qu'il est pas couplé, l'état de session n'a pas eu lieu par l'IIS plus) quand la session se termine ...

c'est spécialement parce que les délais d'attente, je n'ai jamais essayé, mais cet événement se déclenche quand vous appelez Program.Abandon() ??

3

L'événement Session_End est seulement suported par le gestionnaire de session InProc:

ASP.NET Session-State Events (MSDN)

« L'événement Session_OnEnd est pris en charge que lorsque l'état de session en mode propriété est définie sur InProc, qui est Si l'état de session Mode est StateServer ou SQLServer, l'événement Session_OnEnd du fichier Global.asax est ignoré. f l'état de la session Le mode est défini sur Personnalisé, puis le support pour l'événement Session_OnEnd est déterminé par le fournisseur du magasin personnalisé de l'état de session . "

Cet article explique comment utiliser un HttpModule pour imiter cette fonctionnalité:

ASP.NET HttpModule for handling session end with StateServer (CodeProject)

+0

ce que quand le mode d'état de session est réglé sur mesure? –

+0

@ Sana.91 - probablement pas, sauf si vous écrivez votre gestionnaire de client pour déclencher cet événement. – Kev

+0

@ Anti-Santa Comment puis-je faire ça? ... je l'ai cherché et il ne semble pas de solution .. –

Questions connexes