Maison > développement back-end > C++ > Comment puis-je maintenir ma session ASP.NET active en utilisant un AJAX discret ?

Comment puis-je maintenir ma session ASP.NET active en utilisant un AJAX discret ?

Barbara Streisand
Libérer: 2025-01-13 08:22:43
original
930 Les gens l'ont consulté

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

Prolonger les sessions ASP.NET avec des appels AJAX subtils

Les sessions de navigateur étendues entraînent souvent des délais d'expiration de session côté serveur. Cet article présente une méthode non intrusive utilisant des requêtes AJAX chronométrées adressées à un gestionnaire factice pour résoudre ce problème, garantissant ainsi une activité de session continue.

Détails de mise en œuvre d'AJAX

Le code jQuery suivant lance un appel AJAX récurrent vers SessionHeartbeat.ashx toutes les cinq minutes. Ce simple ping actualise le compteur de délai d'attente de la session.

<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>
Copier après la connexion

Gestionnaire de session : SessionHeartbeat.ashx

Ce gestionnaire HTTP gère la durée de vie des sessions. L'implémentation de IRequiresSessionState garantit l'accès aux objets de session.

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

Configuration Web.config

Le gestionnaire est enregistré dans web.config :

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

Améliorer l'expérience utilisateur grâce aux commentaires visuels

Une simple animation de battement de cœur fournit une confirmation visuelle du maintien de la session. Les CSS et JavaScript suivants créent cet effet.

<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>
Copier après la connexion
<code class="language-css">.heartbeat {
    position: absolute;
    display: none;
    margin: 5px;
    color: red;
    right: 0;
    top: 0;
}</code>
Copier après la connexion

Cette solution étend efficacement les sessions ASP.NET pendant la durée de la fenêtre du navigateur, en conservant les fonctionnalités du formulaire et de l'application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal