Wird das Sitzungs-Timeout bei jeder Anfrage zurückgesetzt

Lesezeit: 5 Minuten

Wird das Sitzungs Timeout bei jeder Anfrage zuruckgesetzt
Arian

Wird das Sitzungs-Timeout bei jeder Anfrage zurückgesetzt, unabhängig davon, ob wir Sitzungsvariablen überprüfen? Oder sollten wir mindestens eine Sitzungsvariable verwenden?

Verursacht die Ajax-Anforderung das Zurücksetzen des Sitzungszeitlimits? wie Update Panel ,jQuery ajax ,…

Danke


Bearbeiten 1)

Tut HTTP Get Ursache für das Zurücksetzen des Sitzungs-Timeouts??

  • Ich habe diese Frage gestellt: stackoverflow.com/questions/10432428/…

    – Dan An

    4. Mai 2012 um 9:28 Uhr

  • Verwenden Sie fiddler oder f12 innerhalb von dh. Sie werden sehen, dass alle Cookies (einschließlich des Session-Cookies) gesendet werden, sogar AJAX-Aufrufe. Der Server ist sich also der Aktivität bewusst. Um es kurz zu machen, Ajax oder kein Ajax, die Sitzung wird durch Benutzeraktivität verlängert.

    – Arkturus

    8. Mai 2012 um 21:10 Uhr

Wird das Sitzungs Timeout bei jeder Anfrage zuruckgesetzt
Pankaj

Wird das Sitzungs-Timeout bei jeder Anfrage zurückgesetzt, unabhängig davon, ob wir Sitzungsvariablen überprüfen?

Session läuft nicht ab, wenn Sie weiterhin serverseitigen Code aufrufen. Die session Zeitüberschreitung wird bei jeder Anfrage an den Server zurückgesetzt. Bei nachfolgenden Anfragen an dieselbe Website liefert der Browser die ASP.NET_SessionId Cookie die das serverseitige Modul verwendet, um auf den Sitzungswert (wie Benutzerinformationen) zuzugreifen.

---------------------------------------------------------------------------------
                     How to detect the Session TimeOut
---------------------------------------------------------------------------------

Geben Sie hier die Bildbeschreibung ein

---------------------------------------------------------------------------------

Frage 2 – Verursacht die Ajax-Anfrage das Zurücksetzen des Sitzungs-Timeouts? wie Update Panel, jQuery Ajax, …

Frage 3 – Verursacht HTTP Get das Zurücksetzen des Sitzungs-Timeouts?

Session verfällt, wenn der Benutzer zu lange zwischen den Anfragen gewartet hat. Session verfällt nicht, wenn Sie weiter anrufen server side Code. Die session Zeitüberschreitung wird bei jeder Anfrage an den Server zurückgesetzt

Web.Config

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" 
 sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
    cookieless="true" timeout="1" />

  • Ich denke Session will not expire if you keep on calling server side code Aussage stimmt nicht. Ich habe eine einfache Seite mit einer Update Panel und eine Schaltfläche, ich klicke alle 2 Minuten auf die Schaltfläche und die Sitzung läuft nach 20 Minuten ab

    – Arian

    3. Mai 2012 um 18:42 Uhr

  • @Kerezo – Ich habe eine Sitzung Timeout = 1 in meinem Web.config. Ich habe die gleiche Anzahl von Steuerelementen in meinem Formular. Ich drücke die Taste nach jeweils 15 Sekunden und der Vorgang dauerte bis zu 3 Minuten.

    – Pankaj

    3. Mai 2012 um 18:55 Uhr


  • Sind Sie Sessions? CookieLess?

    – Arian

    3. Mai 2012 um 18:59 Uhr

  • Ich denke, weil Cookieless=true Ihre Sitzung läuft nicht ab

    – Arian

    4. Mai 2012 um 15:33 Uhr

  • Jawohl. Andernfalls wird auch eine neue Sitzung gestartet. Entschuldigung, ich hatte den Eindruck, dass die Abfrage im Zusammenhang mit einer Sitzung mit Cookies stand.

    – Pankaj

    5. Mai 2012 um 18:24 Uhr

ja tut es. es spielt keine Rolle, ob Sie die tatsächlich verwenden Session oder nicht.
Wenn Sie jedoch verwenden nur Ajax-Aufrufe, könnten Sie auf einige Probleme stoßen.
(obwohl ich selbst noch nicht darauf gestoßen bin, Hierist eine Erklärung)

  • Können Sie erläutern, worüber Sie sich nicht sicher sind? wie gesagt, dieses verhalten ist mir noch nie begegnet, also bin ich nicht 100% ich selbst. Es sollte jedoch kein Problem sein, eine kleine Testwebseite zu erstellen, die AJAX-Anforderungen sendet, und zu sehen, ob die Sitzung am Leben erhalten wird oder nicht.

    – J. Ed

    29. April 2012 um 10:57 Uhr

  • Auch wenn Sie nur Ajax-Aufrufe verwenden, gibt es kein Problem.

    – Arkturus

    8. Mai 2012 um 21:05 Uhr

  • Hat jemand einen Beweis dafür, dass das SessionState-Timeout bei jeder neuen Anfrage “gleitet”? Betreff: AJAX-Aufrufe speziell, Benutzer J.Ed hat einen Link bereitgestellt ranjitkumars.wordpress.com/2010/03/02/… was darauf hindeutet, dass AJAX-Aufrufe das sessionState-Timeout nicht verschieben … aber Arcturus widerlegt das … und ich sehe nirgendwo eine offizielle Microsoft-Dokumentation …

    – Die rote Erbse

    1. Februar um 19:55 Uhr

1645629069 973 Wird das Sitzungs Timeout bei jeder Anfrage zuruckgesetzt
Arkturus

Wird das Sitzungs-Timeout bei jeder Anfrage zurückgesetzt, unabhängig davon, ob wir Sitzungsvariablen überprüfen? Oder sollten wir mindestens eine Sitzungsvariable verwenden?

Bis eine Sitzungsvariable eingerichtet ist, wird für jede Rücksendung eine neue Sitzungs-ID generiert.

Verursacht die Ajax-Anforderung das Zurücksetzen des Sitzungszeitlimits? wie Update Panel, jQuery Ajax, …

Session-ID, die standardmäßig im Cookie gespeichert wird, wird für jede AJAX- sowie Nicht-AJAX-Anfrage gesendet. Daher weiß der Server, dass der Sitzungsbenutzer aktiv ist. Nehmen Sie nicht mein Wort dafür. Verwenden Sie Fiddler oder das F12-Tool in dh. Sie können sehen, dass die Cookies mit jeder AJAX GET/POST-Anforderung gesendet werden.

Dies hängt von vielen Faktoren ab, daher schlage ich vor, dass Sie einen Test wie unten durchführen. Es dauert wirklich weniger als 5 Minuten, um herauszufinden, ob Ihre genaue Situation in Ihrer Umgebung funktioniert. Hier ist mein Code, den ich zum Testen verwendet habe. Ich verwende Telerik-Steuerelemente, um die Idee zu testen, aber ich habe eine .get-Datei hinzugefügt, um genau die gewünschte Antwort zu erhalten. aspx-Seite hat

<telerik:RadScriptManager ID="RadScriptManager1" Runat="server">
        </telerik:RadScriptManager>
        <telerik:RadAjaxManager ID="ram" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="btnFake">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="lblAnswer" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <script src="https://stackoverflow.com/questions/10370110/Scripts/jquery-1.4.1-vsdoc.js"></script>
    <script>
        $(document).ready(function () {
            setTimeout(function () { document.location.href = "default.aspx?next"; }, 61000);
            setInterval(function () {
                var divForTimer = $("#divTime");
                var secs = parseInt(divForTimer.html());
                secs = secs + 1;
                $("#divTime").html(secs.toString());
            }, 1000);

        });
        function getPage() {

            $.get("test.aspx", function(result) {
                $("#btnFake").val("Got it");

            });
        }
    </script>
   <asp:Label ID="lblAnswer" runat="server"></asp:Label>
   <Asp:button ID="btnTest" runat="server" Text="Renew" onclick="btnTest_Click" />
   <input type="button" ID="btnAjaxget"  onclick ="getPage()"  value="Ajax get" />
   <asp:Button ID="btnFake" runat="server"  Text ="Fake it" 
        onclick="btnFake_Click"/>
        <div id="divTime">1</div>

die .cs-Seite hat

protected void Page_Load(object sender, EventArgs e)
        {
            Session.Timeout = 1;
            if (EMSG.CommonFunctions.GetSession("test").Length > 0)
            {
                this.lblAnswer.Text = "Session=" + EMSG.CommonFunctions.GetSession("test");
            }
            else
            {
                this.lblAnswer.Text = "No session";
            }

        }

        protected void btnTest_Click(object sender, EventArgs e)
        {
            Session["test"] = "variable set";
            this.lblAnswer.Text = Session["test"].ToString();
        }

        protected void btnFake_Click(object sender, EventArgs e)
        {
            lblAnswer.Text = "Ajax called.";
        }

—Sie können das Obige so arrangieren, dass es zu Ihrer Situation passt. Aber die Idee ist einfach. Sie laden die Seite. Klicken Sie auf die Schaltfläche “Erneuern”, um Ihre Sitzung festzulegen. Warten Sie 61 Sekunden und die Seite wird aktualisiert und die Sitzungsvariable ist verschwunden. Versuchen Sie es erneut, aber klicken Sie dieses Mal nach einigen Sekunden auf eine der anderen beiden Schaltflächen, und wenn die Seite aktualisiert wird, werden Sie sehen, dass die Sitzungsvariable von den Ajax-Aufrufen intakt geblieben ist. Der Ajax-Aufruf aktualisiert in dieser Situation die Sitzungsvariable.

835530cookie-checkWird das Sitzungs-Timeout bei jeder Anfrage zurückgesetzt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy