ホームページ >バックエンド開発 >C++ >AJAX 呼び出しはどのようにして ASP.NET セッションを維持できるのでしょうか?

AJAX 呼び出しはどのようにして ASP.NET セッションを維持できるのでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-13 07:56:46200ブラウズ

How Can AJAX Calls Keep ASP.NET Sessions Alive?

AJAX を使用した ASP.NET セッションの延長

アクティブな ASP.NET セッションを維持することは、スムーズなユーザー エクスペリエンスにとって不可欠です。 堅牢な方法では、AJAX 呼び出しを利用してセッションを定期的に更新し、タイムアウトを防ぎます。

AJAX セッション ハートビートの実装

このアプローチでは、専用の HTTP ハンドラー「SessionHeartbeat.ashx」に対して jQuery AJAX 呼び出しを繰り返し (たとえば、5 分ごとに) 呼び出します。このハンドラーの唯一の目的はセッションの維持です。 このハンドラーの C# コードは次のとおりです:

<code class="language-csharp">public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState
{
    public bool IsReusable { get { return false; } }

    public void ProcessRequest(HttpContext context)
    {
        context.Session["Heartbeat"] = DateTime.Now;
    }
}</code>

対応するクライアント側 JavaScript 関数は次のとおりです:

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

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

ユーザーインターフェースの強化

視覚的なフィードバック (および継続的なセッションのメンテナンス) のために、CSS と HTML を追加できます。

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

    // Clear interval after 'times' iterations (with 100ms buffer)
    setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100);
}

/* HEARBEAT CSS */
.heartbeat {
    position: absolute;
    display: none;
    margin: 5px;
    color: red;
    right: 0;
    top: 0;
}</code>

AJAX セッション ハートビートの利点

  • 秘密操作: セッションのメンテナンスはユーザーに対して透過的です。
  • セッションの永続性: セッションは、ブラウザ ウィンドウが開いている限りアクティブのままです。
  • 柔軟な頻度: ハートビート間隔は簡単に調整できます。
  • ユーザー エクスペリエンスの向上: ユーザー セッションが中断されないようにします。

以上がAJAX 呼び出しはどのようにして ASP.NET セッションを維持できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。