Session-timeout funktioniert nicht bei asp.net mvc 4 mit C# . Warum?
Für meine web-Seite, die ich konfiguriert login-session-timeout für 1 Woche im web.config-Datei
<system.web>
<httpRuntime />
<!-- Session keeps for 7 days -->
<sessionState timeout="10080"></sessionState>
<authentication mode="Forms">
<forms loginUrl="~/" timeout="10080" slidingExpiration="true"/>
</authentication>
<!-- Configuration end -->
</system.web>
Hier ist der code für login -
[AllowAnonymous]
[HttpPost]
public ActionResult Login(string Login, string Password)
{
//empty passwords are not allowed
if (Password == "")
return Redirect(Request.UrlReferrer.ToString());
bool LoginResult = WebSecurity.Login(Login, Password, true);
return Redirect(Request.UrlReferrer.ToString());
}
Ich einloggen, browser schließen und öffnen Sie es erneut, gehen Sie auf meine web-site -> Benutzer angemeldet ist.
Ich browser schließen, warten Sie einige Zeit (etwa 30 Minuten) gehen Sie zu meiner web-site -> Benutzer wird abgemeldet.
Warum? Sitzung gespeichert werden soll, für 7 Tage, aber wir haben nicht einmal 30 Minuten.
Whan kann die Quelle des Problems?
Bearbeiten 1 Die Hauptidee ist, dass ich will zurück zu gehen, um die Website in mehreren Tagen und immer noch öffnen Sie es mit angemeldeten Benutzers
- Sind Sie wirklich sicher, dass Daten Sie behalten möchten, im Speicher für 7 Tage nach dem letzten Besuch?
- Ja, es ist eine interne Website, die hat 3-Benutzer nur, und ich bin zu müde, um die Anmeldeinformationen einzugeben, jedes mal
- Wir haben das gleiche Problem, wenn wir verschoben von mvc3 zu 4.
- könnten Sie bitte lassen Sie mich wissen, welche Konfiguration zu tun, die wir ändern müssen. Ich bin auf der gleichen Seite.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht Ihre
IIS
würde so konfiguriert wurden, dass 20 MinutenTimeOut
.Ändern Sie die
IIS
session-timeout1 Woche24 Stunden, was ich hoffe, wird Ihr problem lösen.Finden diese
Vom design, der maximale Wert der timeout gesetzt werden 24 Stunden. Schauen Sie sich Microsoft support forum
Erreichen ein größeres Fenster für timeout, könnten Sie überlegen, ob die Aufrechterhaltung der session-Staaten in
SQL
- so der Vorschlag von @Marc.Versuchen Sie, Ihren Sitzungszustand in Sql (hier der link). Dies sollte beibehalten eines IIS-Neustart/app-pool, Recycling usw.
Website-Sitzung.Timeout funktioniert nur, wenn es weniger als die Anwendung pool-session-timeout-Wert; weil, wenn die Anwendung pool-Sitzungs-timeout-Werts wird erreicht, dass insbesondere die Anwendungs-pool neu gestartet wird.
http://www.codeproject.com/Articles/113287/Why-Session-Timeout-is-not-working-for-your-websit
Wenn die Anwendung im Leerlauf (keine Anfragen für einige Zeit),
IIS
kann heruntergefahren werden. Dies zerstört alleSessions
.Authentication
speichert die Daten in einer Datenbank und so überlebt einen Neustart.