Wir haben eine ASP.Net-Anwendung, die für die Sitzung (und den Cookie) einen gleitenden Ablauf von 20 Minuten hat. Wir haben jedoch einige AJAX, die den Server nach neuen Informationen abfragt. Der Nachteil davon ist natürlich, dass die Sitzung auf unbestimmte Zeit fortgesetzt wird, da sie durch die Polling-Anrufe am Leben erhalten wird, wodurch die Ablaufzeit aktualisiert wird. Gibt es eine Möglichkeit, dies zu verhindern - d. H. Nur zuzulassen, dass die Sitzung bei Nicht-Ajax-Anrufen aktualisiert wird?
Das Deaktivieren des gleitenden Ablaufs ist nicht wirklich eine Option, da dies eine Anwendung ist, die Geschäftsbenutzer den größten Teil ihres Tages zwischen Telefonanrufen verwenden werden.
Andere Stackoverflow-Diskussionen zu dieser Diskussion über die Verwaltung von zwei separaten Anwendungen (eine für authentifizierte Anrufe, eine für nicht authentifizierte. Ich bin nicht sicher, ob dies eine Option ist, da alle Anrufe authentifiziert werden müssen.
Irgendwelche Ideen?
Ich habe dies getan, indem ich eine versteckte Seite in einem i-Frame erstellt habe. Dann postet es alle 18 Minuten mit JavaScript, um die Sitzung am Leben zu erhalten. Das funktioniert wirklich gut.
Dieses Beispiel stammt aus einem ASP.NET-Forms-Projekt, konnte jedoch für MVC optimiert werden.
Erstellen Sie eine Seite namens KeepSessionAlive und fügen Sie ein Meta-Refresh-Tag hinzu
Meta-ID="MetaRefresh" http-equiv="Aktualisieren" content="21600; url = KeepSessionAlive.aspx"
Im Code hinter
geschützte Zeichenfolge WindowStatusText=""; %Vor%Fügen Sie den versteckten iFrame auf einer Masterseite hinzu
iframe ID="KeepAliveFrame" src="KeepSessionAlive.aspx" frameBorder="0" width="0" height="0"
Tags und Links asp.net-mvc session ajax cookies