2010-03-03 19 views
15

Ich habe meine Web.Config Datei wie folgt in einem ASP.NET MVC 2-Projekt konfiguriert:Wann wird Session_End() in ASP.NET MVC aufgerufen?

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

und addierten die folgenden 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() aufgerufen wird, wenn ein neuer Benutzer geht auf die Webseite. Ich hätte erwartet, dass Session_End() nach 1 Minute Leerlaufzeit aufgerufen wird, aber das ist nicht der Fall. Fehle ich etwas?

Antwort

8

Geduld haben. Das Ereignis sollte aufgerufen werden, aber nicht unbedingt direkt nach der Zeitüberschreitung.

könnten Sie von einem Browser versuchen: eine Sitzung starten, warten> 1 Minute, ein Postback tun irgendwie

Dies soll, dass die Timeout Arbeiten überprüfen helfen, und ich denke, Sie werden auch die SessionEnd zu dieser Zeit geschehen sehen . Ansonsten warten Sie einfach und starten Sie einige andere Sitzungen. Das System wird kommen und es irgendwann anrufen.

+0

Interessant, würde ich herausgefunden habe es es richtig in der 1-Minuten-Marke nennen würde –

1

Tipp zum Testen: Verwenden Sie Session.Abandon, damit Sie sich nicht mit Ihrem tatsächlichen Wert für web.config herumschlagen müssen. Setzen Sie einfach keinen Sitzungswert und rufen Sie Session.Abandon während der gleichen Anfrage oder es wird nicht gespeichert.

Hier ist ein Artikel mit weiteren Informationen über session_end

8

dieses Denken Sie daran:

Wenn Sie nichts in die Sitzung speichern, die Session_End wird nicht Feuer. Wenn Sie Daten in der Sitzung in der ersten Anfrage speichern und in der gleichen Anfrage den Abbruch aufrufen, wird auch das Session_End nicht ausgelöst.

Hoffe, das hilft!

T

btw: ASP.NET Session_End event not firing

Verwandte Themen