Session Time-Out nach 10 Minuten
Wir haben ein riesiges problem.
Wir sind mit den belgischen eID (electronic identity card, dies ist eine Smartcard). Die Claim
die zurückgegeben wird, wird verwendet, indem Sie unsere Formulare Authentifizierung.
Funktioniert alles einwandfrei, aber nach 10 Minuten (von Aktivität oder Inaktivität, ist egal), wird es automatisch abgemeldet.
Hier die code fragment, wo wir erstellen der Sitzung:
private void CreateSession(ClaimsPrincipal transformedPrincipal)
{
SessionSecurityToken sessionSecurityToken = new SessionSecurityToken(transformedPrincipal, TimeSpan.FromHours(1));
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionSecurityToken);
}
In der Web.config, setzen wir die session-timeout:
<sessionState cookieless="false" timeout="60" />
Auf dem IIS-server, wir setzen Sie die Anwendung Pool-Idle-Timeout auf 8 Stunden.
Wir setzen auch den Regelmäßigen Zeitintervall des recycling zu 8 Stunden.
- bitte überprüfen Sie Ihre web.config Datei verlängern Sie die Lebensdauer von sessions.
- Sind Sie sicher, dass Ihr die Sitzung und nicht der forms-Authentifizierung, ist das timing aus? also müssen Sie sich erneut anmelden? Auch, was ist Ihre cookie-Ablaufzeit?
- Wir haben bereits versucht, diese. Hat nicht funktioniert.
- Ich bin mir nicht sicher, welches ist das timing. Sie haben re-login. Wir glauben, dass unsere cookie-Ablaufzeit wird durch den
SessionSecurityToken
(d.h. 1 Stunde), ist das falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Quick hack:
Das session-2 Minuten später als die Formen timeout. Dadurch wird sichergestellt, dass die Sitzung nicht getötet werden auf die Sekunde genau die Authentifizierung stirbt. Aber denken Sie daran, die Sitzungen sind unabhängig von Formen (siehe dieser blog) für weitere details.
Tiefere Untersuchung:
Ich würde versuchen, und arbeiten Sie heraus, welche einen spezifisch ist das timing. Dies ist ein ziemlich einfacher test, und sparen Sie eine ganze Menge Zeit.
So, die Abschnitte benötigt werden, sind diese mit einem Zeitlimit von 1 minute und Sitzung von 10000
Also login, navigieren Sie zu einer Seite, warten Sie eine minute und aktualisieren Sie die Website und sehen Sie die login-Seite.
In Ihrem Lieblings-browser, öffnen Sie eine Symbolleiste "Entwickler" und durchsuchen Sie das speichern von cookies für diese site. Es sollte 2-cookies:
ASP.NET_SessionId
- verfolgen Sie Ihre Sitzung.ASPXAUTH
- verfolgen Sie Ihre login-Daten (es sei denn, dein browser hat es gelöscht wegen Ablauf)Sollten Sie sehen, dass das Zeitlimit für die Sitzung (
ASP.NET_SessionId
) in der Zukunft, aber die form (.ASPXAUTH
) abgelaufen ist.Erneut einloggen und Ihre Behandlung sollte die gleiche wie zuvor.
Rückseite der Einstellungen, und Sie sollten finden, das Gegenteil ist passiert, ich.e Sie angemeldet sind, in einer für eine lange Zeit, aber es zurücksetzen.
Verfolgung der Sitzung Ende Veranstaltung
Einem mehr Sie versuchen können, ist in Ihrem global ASAX. Stellen Sie sicher, dass Ihre
sessionMode='InProc'
in Ihrer Website.config und fügen Sie eine Methode:Den Haltepunkt trifft, wenn die Sitzung stirbt, die Sie möglicherweise in der Lage zu verfolgen Sie zurück über den Aufruf-stack der genaue Grund, warum ist abgelaufen. Dies kann zustande kommen, wenn der code ruft
Session.Abandon()
als gut.