2016-10-05 4 views
1
gesetzt

In meinem ASP.NET MVC5 website die Anmelde- und Session-Timeout in web.config sind wie folgt:ASP.NET MVC-Auth oder Sitzung abläuft schneller als

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" slidingExpiration="true" timeout="60"/> 
    </authentication> 
    <sessionState mode="InProc" timeout="60"/>  
</system.web> 

noch die Sitzung oder Authentifizierungs-mal unsere in fünf Protokoll. Ich habe an mein Webhosting-Angebot herangetreten, um die Zeitüberschreitung in IIS zu erhöhen, und sie gaben eine screenshot nach dem Erhöhen der Zeitüberschreitung in IIS frei, aber nichts änderte. Irgendeine Idee, warum das passiert.

Antwort

1

Es war ein Problem mit dem SystemIdleTime Variable im IIS. Ich habe meinen Hosting-Provider gebeten, diesen Wert auf 30 Minuten zu erhöhen, und es hat funktioniert.

Es zeigt an, dass alle meine Sitzungsvariablen gelöscht würden, wenn der Anwendungspool herunterfährt, wenn 30 Minuten lang keine Anforderung vorliegt. Dieser Wert überschreibt das Zeitlimit der Sitzung, das im web.cofig der Website festgelegt wurde. Sie könnten es auf 0 setzen, um anzuzeigen, dass der Anwendungspool niemals heruntergefahren wird, und dann können Sie das Zeitlimit der Sitzung über web.config überprüfen. Ich fand auch das gut article -

1

Zunächst einmal versuchen, Session-Timeout Einstellung auf Session_Start Methode in Global.asax:

void Session_Start(object sender, EventArgs e) 
{ 
    Session.Timeout = 60; 
} 

Hinweis: Mit dem In-Process-Sitzungsstatus verwenden, Ihre Sitzungen werden alle IIS-Anwendungspool weggewischt recycelt, die in Dein Problem-App-Pool wird nach 5 Minuten recycelt.

Wenn oben Versuch nicht funktioniert, und Sie haben Zugriff auf Server des IIS Management Führen Sie folgende Schritte:

  1. Öffnen Sie IIS-Manager.
  2. Wählen Sie Anwendungspools => [Name Ihres App-Pools] => Recycling/Erweiterte Einstellungen.
  3. Aktivieren Sie Regular time interval (minutes) und legen Sie sie auf 60 fest, und übernehmen Sie dann Ihre Änderungen.

Wenn Sie keinen Zugriff auf beiden & Konfigurationen SQL Server IIS-Manager haben, können Sie DB-basierte Sitzungszustandsverwaltung statt InProc-Modus (siehe MSDN Referenz unten) zu versuchen.

DB-basierte Sitzungsstatus erfordert SQLServer Attributmodus zu ändern, zB:

<system.web> 
    <sessionState mode="SQLServer" sqlConnectionString="Integrated Security=SSPI;Data Source=SERVERNAME;Initial Catalog=DATABASE" /> 
</system.web> 

Referenz:

MSDN: https://msdn.microsoft.com/en-us/library/ms178586.aspx

Session expires too quickly in asp.net mvc4 application

+0

Vielen Dank Yamamoto San, es war ein Problem mit der ** SystemIdleTime ** - Variable im IIS. Ich habe meinen Hosting-Provider gebeten, diesen Wert zu ändern, und es hat funktioniert. Ich fand auch das gut ** [Artikel] (http://aspnetfaq.com/iis7-application-pool-idle-time-out-settings/) ** – Sujoy