2009-06-25 13 views
6

Ich frage diese Frage aus Neugier.Warum Session_End-Ereignis nicht ausgelöst, wenn StateProvider nicht InProc ist?

Ich bemerkte dies in meinem 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. 
} 

ich verstehen will, warum Session_End Ereignis nicht erfaßt/ausgelöst, wenn der Sitzungsmodus State oder SQLServer ist?

Antwort

10

weil die ASP.NET Session State es nicht mehr im Speicher ist ...

wenn ein anderes Verfahren unter Verwendung des Sitzungsstatus zu speichern, die IIS weiß nicht (weil es nicht gekoppelt ist, der Sitzungszustand nicht gehalten wird durch den IIS mehr) wenn die Sitzung endet ...

dies ist speziell, weil die Timeouts, habe ich nie versucht, aber das Ereignis ausgelöst wird, wenn Sie Session.Abandon() programmatisch aufrufen ??

3

Das Session_End Ereignis wird nur durch die InProc Session-Manager suported:

ASP.NET Session-State Events (MSDN)

„Das Session_OnEnd Ereignis nur unterstützt, wenn der Sitzungsstatusmodus Eigenschaft auf InProc eingestellt, die ist Wenn der Sitzungsstatus Modus StateServer oder SQLServer ist, wird das Ereignis Session_OnEnd in der Datei Global.asax ignoriert f Der Sitzungsstatus Modus wird auf Benutzerdefiniert festgelegt, und dann wird die Unterstützung für das Session_OnEnd -Ereignis durch den benutzerdefinierten Sitzungsstatus Speicheranbieter festgelegt. "

Dieser Artikel beschreibt, wie eine HttpModule verwenden, um diese Funktionalität zu emulieren:

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

+0

was ist, wenn Sitzungszustand-Modus auf Custom festgelegt ist? –

+0

@ Sana.91 - wahrscheinlich nicht, es sei denn, Sie schreiben Ihren Kundenhandler, um dieses Ereignis zu erhöhen. – Kev

+0

@ Anti-Santa Wie kann ich das tun? ... ich habe danach gesucht und es scheint keine Lösung zu geben .. –

Verwandte Themen