ASP.NET Session_End-Ereignis nicht auslösen.
Ich versuche, eine Datenbank-Transaktion ausgeführt wird, wenn ein ASP.NET Sitzung beendet (in einfachen Forms-app auf dem Windows 2008 Server). Ich merke, dass viele Befragten deuten nicht darauf zu verlassen, das Session_End-Ereignis (wie ich gelesen habe, in hundert Beiträge im forum zu diesem Thema ergab sich durch eine Google-Suche). Bitte humor mich.
Habe ich das getan:
-
Aktiviert session-state in web.config:
<sessionState mode="InProc" cookieless="false" timeout="1" />
-
Bestätigt, dass das Session_End-Ereignis NICHT ausgelöst wird, wenn ich call Session.Verlassen() ODER wenn der session-Timeout.
-
Bestätigt, dass die session Timeout nach 1 minute (wie konfiguriert oben).
-
Bestätigt, dass ich nicht versuchte Zugriff auf Request-oder Response-oder Server-Objekte (was ich verstehen würde schweigend Fehler aus).
EDIT: ich habe auch bestätigt, dass ich die Speicherung von Daten in der session--ich benutze eine Reihe von session-Variablen zu speichern verschiedener Daten Punkte, und diese werden instanziiert, wenn der Benutzer in der app.
EDIT: ich habe auch bestätigt, dass ich bin nicht die Schaffung der session und dann aufzugeben, es in der gleichen Anfrage. Wie oben erwähnt, das problem besteht auch, wenn die Sitzung abläuft (d.h., kein Antrag gestellt wird).
Bitte um Hilfe!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für andere auf, die für eine Auflösung und nicht eine Antwort zu finden auf diese Frage, ich habe gesehen einen Fall, wo ein Projekt ist Global.asax definiert wurde, mit einer code-behind-Datei verwiesen wird, aber die Ereignisse definiert, die innerhalb der asax statt der .cs-Datei.
In diesem Fall, es würde das Feuer die Session_Start, aber nie das Session_End, als ob er war auf der Suche, auf die verwiesen wird .cs-Datei.
Durch das entfernen der Referenz auf die code-behind-Datei, Session_End brennen begann wie erwartet.
Wenn Sie nicht speichern alles, was in der Sitzung, die session_end wird nicht ausgelöst.
Wenn Sie das speichern der Daten in der session in der ersten Anfrage, und rufen Sie aufzugeben in der gleichen Anfrage der session_end wird auch nicht ausgelöst.
Hoffe, das hilft!
T
Herausstellt, WURDE das event feuern, sondern der code, der ausgeführt wurde, war still erroring, da ich nicht richtig Zugriff auf das Application-Objekt und einige meiner App_Code-Klassen (die ich noch nicht wissen, wie zu tun, aber ist es Wert einen separaten Stack Overflow Frage).
Versuchen das initialisieren der session, die im gleichen Methode, die die Datenbank abfragt.Tun Sie es, bevor Abfragen an die Datenbank.