Laden...

Session Timeout

Erstellt von Diräkt vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.001 Views
D
Diräkt Themenstarter:in
615 Beiträge seit 2009
vor 11 Jahren
Session Timeout

Hallo Leute 😃

Ich habe ein Control, welches alle X Sekunden ein Post absetzt um die Session zu verlängern. Das geschieht per Javascript, etwa so :

 $.ajax({
                timeout: options.AJAXTimeout,
                url: options.keepAliveURL,
                error: function () {
                    self.failedRequests--;
                },
                success: function (response) {
                    if ($.trim(response) !== options.serverResponseEquals) {
                        self.failedRequests--;
                    }
                },
                complete: function () {
                    if (recurse) {
                        self._startTimer();
                    }
                }
            });

Die Keep-Alive Seite sieht so aus :


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
   OK
    </form>
</body>
</html>


 protected void Page_Load(object sender, EventArgs e)
        {
            Session["KeepSessionAlive"] = DateTime.Now;
        }

Auch wenn der Post abgesetzt wird, wird dadurch die Session-Zeit nicht wieder zurück-gesetzt.

Sprich:
=> Wenn im IIS 20 minuten konfiguriert sind, flieg ich nach 20 minuten raus, trotz des Controls, warum, was mach ich falsch ?

Beste Grüsse

Diräkt

16.842 Beiträge seit 2008
vor 11 Jahren

Vielleicht erklärst Du was Du vor hast und wieso Du nicht einfach das Default-Timeout in der Web.config anpasst.
Sind ja unnötige Ressourcen, die Du verschenkst..

Hinweis: wenn die Anwendung in den Sleep Modus fällt (siehe AppPool-Konfiguration) oder die Anwendung neu startet werden alle Sessions zerstört, egal ob das Session-Timeout überschritten wurde oder nicht.
Da der Standard-Timout für den Sleep Modus bei 20 Minuten ist könnte das Dein Problem sein.
Steht aber auch als Warning in der Doku.

D
Diräkt Themenstarter:in
615 Beiträge seit 2009
vor 11 Jahren

Hallo Abt

Danke für Deine Antwort.

Es gibt doch 2 Einstellungen nicht ?
=> APP - Pool
=> (screenshot => ist das diese Einstellung)?
=> Web.Config
=
> <sessionState timeout="60" />

Mit diesen beiden Einstellungen müsste die WebApp also nach einloggen, 60 minuten aktiv bleiben ?

Beste Grüsse

Diräkt

16.842 Beiträge seit 2008
vor 11 Jahren

Das Forms-Authentifizierungs-Timeout hast Du auch beachtet?

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

Ja, das ist die Einstellung des Sleep-Modus.

D
Diräkt Themenstarter:in
615 Beiträge seit 2009
vor 11 Jahren

Hallo Abt

Danke werde ich testen! Gerne würde ich noch Deine Frage beantworten und dazu Deine (oder Eure) Meinung wissen.

Ich habe mir überlegt anstatt den Timeout auf z.B 8 Stunden zu stellen, lieber alle 30 Minuten ein Post ( sieher erster Thread ) abzusetzen, um die Applikation aktiv zu halten.

=> Ja , das ist Overhead und Dein Einwand ist berechtigt

ABER:

=> Wenn ich es richtig verstehe würde ein Timeout von 8 Stunden bedeuten : ==> User loggt sich ein ==> User schliesst Browser ( ohne sich abzumelden ) ==> Session bleibt 8 Stunde in den Ram des Servers

Mein Control würde also erlauben :

=> Timeout auf 1 Stunde
==> User loggt sich ein
==> Alle z.B. 30 Minuten ein Post => session refresh ( damit auch 8 Stunden gehen .... )
==> User schliesst Browser (ohne sich abzumelden)
==> Session bleibt max 1 Stunde in den Ram des Servers

Ist mein Verständniss falsch ? Oder gibts dafür ne bessere Lösung ?

[OFF]
Ich persönlich halte es nicht für sinnvoll eine Session solange am leben lassen zu wollen. Das "neu" Anmelden dauert ja 2-3 Sekunden.... Nur was Entwickler denken interessiert ja niemand 😃
[/OFF]

Beste Grüsse

Diräkt

16.842 Beiträge seit 2008
vor 11 Jahren

Kannst die Session ja auch in den Cookie schieben und nur als Notlösung das Serverseitige speichern.
Ich versuch die Session so wit wie möglich zu meiden, da sich bei ~20.000 Usern zeitgleich gern ziemlich viel ansammelt.