Ich habe den sessionState so konfiguriert, dass er den benutzerdefinierten SQL-Server unten verwendet und ihn nach 1 Minute als abgelaufen definiert. Es scheint, als ob die Sitzung immer im Browser und auf dem SQL-Server verbleibt. Ich habe sogar die regenerateExpiredSessionId auf false gesetzt und habe immer noch das gleiche Problem. Ich benutze asp.net 4.0 unter IIS 7 Windows 7 Pro.
Meine web.config-Konfiguration
%Vor%Ich habe die Tabelle ASPStateTempSessions in der Datenbank des Sitzungsstatus überprüft und Datensätze darin gesehen. Lese- und Schreibzugriff, Eigentümerrechte sind aktuell mit dem aktuellen Benutzer dieser Datenbank konfiguriert. Es gibt keine Fehler von "Even Viewer".
Ich habe den Wert aus der ASPStateTempSessions-Tabelle überprüft und darunter scheint die Sitzung ausgeschaltet zu sein, verglichen mit 5 Stunden Vergleich 1 Minute. Es sieht so aus, als ob asp.net konfiguriert hat, dass es innerhalb einer Minute abgelaufen ist und eine andere Zeitzone anstelle der aktuellen Maschinenzeitzone verwendet.
Meine aktuelle Zeit ist 17.12.2011 11:29 Uhr Datenbankspalten hatten den Wert CreatedDate (Spalte) 2011-12-17 17: 29: 01.677 Läuft ab (Spalte) 2011-12-17 17: 30: 03.903
Die vollständigen Details zum Datenbankwert finden Sie unten.
Der erste Datensatz ist, wenn ich meine Website zum ersten Mal besuche
%Vor%Nachdem ich in meinem Browser die "Refresh" Taste gedrückt habe, wurde der Datensatz mit der neuen abgelaufenen Zeit aktualisiert, aber die Sitzungsinformationen sind immer noch da
%Vor%Irgendwelche Ideen?
Die Ablaufzeit ist UTC.
Wenn SQL-Sitzungen ablaufen, werden sie nicht sofort aus der Sitzungstabelle entfernt. Sie erhalten auch kein Session_End-Ereignis.
Der SQL-Sitzungsanbieter überwacht die Expires-Spalte in der Sitzungstabelle nicht aktiv. Stattdessen sind Sitzungen nicht "offiziell" abgelaufen, bis sie aus der Tabelle entfernt werden, was mit einem SQL-Agent-Job erfolgt, der die gespeicherte DeleteExpiredSession-Prozedur aufruft. Standardmäßig ist der Job so konfiguriert, dass er alle 60 Sekunden ausgeführt wird. Dies bedeutet natürlich, dass SQL Agent ausgeführt werden muss, damit die Sitzung ablaufen kann. Es bedeutet auch, dass Sie mindestens 60 Sekunden nach dem "nominalen" Ablauf warten müssen, bevor der tatsächliche Ablauf stattfindet.
Sie können Abläufe erzwingen, indem Sie den SP selbst aufrufen, wenn Sie dies möchten.
Tags und Links asp.net