Heim >Backend-Entwicklung >C++ >Wie kann ich meine ASP.NET-Sitzung mit unaufdringlichem AJAX am Leben halten?

Wie kann ich meine ASP.NET-Sitzung mit unaufdringlichem AJAX am Leben halten?

Barbara Streisand
Barbara StreisandOriginal
2025-01-13 08:22:43961Durchsuche

How Can I Keep My ASP.NET Session Alive Using Unobtrusive AJAX?

ASP.NET-Sitzungen mit subtilen AJAX-Aufrufen verlängern

Längere Browsersitzungen führen häufig zu serverseitigen Sitzungszeitüberschreitungen. In diesem Artikel wird eine nicht aufdringliche Methode vorgestellt, die zeitgesteuerte AJAX-Anfragen an einen Dummy-Handler verwendet, um dieses Problem zu beheben und eine kontinuierliche Sitzungsaktivität sicherzustellen.

AJAX-Implementierungsdetails

Der folgende jQuery-Code initiiert alle fünf Minuten einen wiederkehrenden AJAX-Aufruf an SessionHeartbeat.ashx. Dieser einfache Ping aktualisiert den Timeout-Zähler der Sitzung.

<code class="language-javascript">function setHeartbeat() {
    setTimeout("heartbeat()", 5*60*1000); // 5-minute interval
}

function heartbeat() {
    $.get("/SessionHeartbeat.ashx", function(data) {
        // Session refresh confirmation
        setHeartbeat();
    }, "json");
}</code>

Sitzungshandler: SessionHeartbeat.ashx

Dieser HTTP-Handler verwaltet die Sitzungslebensdauer. Die Implementierung von IRequiresSessionState garantiert den Zugriff auf Sitzungsobjekte.

<code class="language-csharp">public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState
{
    public void ProcessRequest(HttpContext context)
    {
        context.Session["Heartbeat"] = DateTime.Now;
    }
}</code>

Web.config-Konfiguration

Der Handler ist registriert in web.config:

<code class="language-xml"><httphandlers>
  <add path="SessionHeartbeat.ashx" type="SessionHeartbeatHttpHandler" validate="false" verb="GET,HEAD" />
</httphandlers></code>

Verbesserung der Benutzererfahrung durch visuelles Feedback

Eine einfache Herzschlaganimation bietet eine visuelle Bestätigung der Sitzungserhaltung. Das folgende CSS und JavaScript erzeugen diesen Effekt.

<code class="language-javascript">function beatHeart(times) {
    var interval = setInterval(function () {
        $(".heartbeat").fadeIn(500).fadeOut(500);
    }, 1000); // 1-second beat

    setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100);
}</code>
<code class="language-css">.heartbeat {
    position: absolute;
    display: none;
    margin: 5px;
    color: red;
    right: 0;
    top: 0;
}</code>

Diese Lösung verlängert ASP.NET-Sitzungen effektiv für die Dauer des Browserfensters und behält dabei die Formular- und Anwendungsfunktionalität bei.

Das obige ist der detaillierte Inhalt vonWie kann ich meine ASP.NET-Sitzung mit unaufdringlichem AJAX am Leben halten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn