wake-up-neo.com

Sitzungszeitlimit in ASP.NET

Ich führe eine ASP.NET 2.0-Anwendung in IIS 6.0 aus. Ich möchte, dass das Sitzungszeitlimit 60 Minuten und nicht die Standard-20 Minuten beträgt. Ich habe Folgendes ausgeführt

  1. in web.config einstellen
  2. Legen Sie das Sitzungszeitlimit in den Konfigurationseinstellungen von IIS manager/Websiteeigenschaften/ASP.NET auf 60 Minuten fest
  3. Setzen Sie das Leerlaufzeitlimit in den Eigenschaften/der Leistung des Anwendungspools auf 60 Minuten.

Ich erhalte immer noch eine Sitzungsunterbrechung von 20 Minuten. Muss ich noch etwas tun?

155
klone

Verwenden Sie die Formularauthentifizierung?

Bei der Formularauthentifizierung wird ein eigener Wert für die Zeitüberschreitung verwendet (standardmäßig 30 Minuten). Ein Formularauthentifizierungs-Timeout sendet den Benutzer zur Anmeldeseite, während die Sitzung noch aktiv ist. Dies sieht möglicherweise so aus, als würde Ihre App nach Ablauf der Sitzungszeit ein Verhalten aufweisen, das es leicht macht, eine mit der anderen zu verwechseln.

<system.web>
    <authentication mode="Forms">
          <forms timeout="50"/>
    </authentication>

    <sessionState timeout="60"  />
</system.web>

Wenn Sie das Formularzeitlimit auf einen Wert festlegen, der kürzer als das Sitzungszeitlimit ist, kann der Benutzer ein Fenster zum erneuten Anmelden erhalten, ohne dass Sitzungsdaten verloren gehen.

270
HectorMac

Verwenden Sie den folgenden Codeblock in Ihrer web.config-Datei. Hier beträgt das Standard-Sitzungs-Timeout 80 Minuten.

<system.web>
 <sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>

Verwenden Sie den folgenden Link für das Sitzungs-Timeout mit Popup-Warnmeldung.

Sitzungs-Timeout-Beispiel

Zu Ihrer Information: In den obigen Beispielen wird das Popup-Steuerelement devexpress verwendet, sodass Sie das Popup-Steuerelement devexpress durch das normale Popup-Steuerelement anpassen bzw. ersetzen müssen. Wenn Sie devexpress verwenden, müssen Sie keine Anpassungen vornehmen

39

Ich weiß nichts über web.config oder IIS. Aber ich glaube, dass man es mit C # -Code so machen kann

Session.Timeout = 60; // 60 is number of minutes
37
Dmitris

Das ist normalerweise alles, was Sie tun müssen ...

Sind Sie sicher, dass der Grund für den Verlust der Sitzung nach 20 Minuten im Leerlauf liegt ...

Es gibt viele Gründe, warum die Sitzung möglicherweise gelöscht wird. Sie können die Ereignisprotokollierung für IIS aktivieren und dann die Ereignisanzeige verwenden, um die Gründe für das Löschen der Sitzung anzuzeigen. Sie können möglicherweise feststellen, dass dies aus anderen Gründen geschieht.

Sie können auch die Dokumentation für Ereignismeldungen und die zugehörige Ereignistabelle lesen.

8
davidsleeps

In meiner Situation war es Application Pool. Es ist so eingestellt, dass es neu startet, wenn es xx Minuten im Leerlauf ist. Wenn ich es so einstelle, dass es nicht neu gestartet wird, scheint es den Wert von Web Config zu verwenden.

8
lyords

Haben Sie irgendetwas in machine.config, das möglicherweise in Kraft tritt? Das Festlegen des Sitzungszeitlimits in web.config sollte alle Einstellungen in IIS oder machine.config außer Kraft setzen. Wenn Sie jedoch eine web.config-Datei in einem Unterordner Ihrer Anwendung haben, wird diese Einstellung außer Kraft gesetzt die im Stammverzeichnis Ihrer Anwendung.

Wenn ich mich richtig erinnere, wirkt sich das Timeout in IIS nur auf ASP-Seiten aus, nicht auf ASPX. Sind Sie sicher, dass Ihr Sitzungscode in web.config korrekt ist? Es sollte ungefähr so ​​aussehen:

<sessionState
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="60"
    sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    cookieless="false"
    timeout="60"
/>
7
Cᴏʀʏ

https://usefulaspandcsharp.wordpress.com/tag/session-timeout/

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="60" slidingExpiration="true" />
</authentication>

<sessionState mode="InProc" timeout="60" />
3
Paulo Tolentino

Wenn Sie die Authentifizierung verwenden, empfehle ich, Folgendes in die Datei web.config einzufügen.

In meinem Fall werden Benutzer nach Ablauf des Zeitlimits auf die Anmeldeseite umgeleitet:

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>

Sie finden die Einstellung hier in IIS:

Settings

Es befindet sich auf Server-, Website- oder App-Ebene unter "ASP".

Ich denke, Sie können es auf der web.config-Ebene hier einstellen. Bitte bestätigen Sie dies für sich.

<configuration>
   <system.web>

      <!-- Session Timeout in Minutes (Also in Global.asax) -->
       <sessionState timeout="1440"/>

   </system.web>
</configuration>
2

Das Zeitlimit für IIS-Sitzungen gilt nur für klassische ASP-Anwendungen. Dies wird in der IIS Konfiguration gesteuert. In Ihrem Fall: Für ASP.NET-Apps nur das in der Datei web.config angegebene Zeitlimit gilt.

1
Crying Freeman

Seit ASP.Net Core 1.0 (vNext oder welcher Name auch immer verwendet wird) werden Sitzungen anders implementiert. Ich habe den Sitzungs-Timeout-Wert in Startup.cs Und void ConfigureServices Folgendermaßen geändert:

services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));

Oder wenn Sie die Datei appsettings.json Verwenden möchten, können Sie Folgendes tun:

// Appsettings.json
"SessionOptions": {
    "IdleTimeout": "00:30:00"
}

// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));
1
Matty

wenn Sie eine Sitzungszeitüberschreitung für die Website wünschen, entfernen Sie diese

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>

tag aus der Datei web.config.

0
Nayan Hodar