ホームページ >バックエンド開発 >C++ >非アクティブによる ASP.NET セッションの早期期限切れを防ぐにはどうすればよいですか?

非アクティブによる ASP.NET セッションの早期期限切れを防ぐにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-13 06:12:41686ブラウズ

How Can I Prevent Premature ASP.NET Session Expiration Due to Inactivity?

ASP.NET セッションの延長: 実践的なアプローチ

アクティブなユーザー セッションを維持することは、シームレスな Web アプリケーション エクスペリエンスにとって不可欠です。 非アクティブなためにセッションが早期に期限切れになると、ワークフローが中断され、データ損失が発生する可能性があります。この記事では、この一般的な問題を防ぐために、時間指定された AJAX 呼び出しを使用した解決策を紹介します。

AJAX によるセッションの維持

サーバーに HTTP リクエストを定期的に送信すると、セッションのタイムスタンプが効果的に更新され、期限切れを防ぎます。この軽量な方法により、ユーザー操作の中断が最小限に抑えられます。

セッション更新ハンドラーの実装

単純な HTTP ハンドラーは GET リクエストを処理し、セッションのタイムスタンプを更新します。 基本的な実装は次のとおりです:

<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>

このハンドラーを web.config に登録します:

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

スケジュールされた AJAX 呼び出し用の JavaScript

クライアントサイド JavaScript は、SessionHeartbeat.ashx ハンドラーへの時間指定された AJAX 呼び出しを実行します。 この jQuery の例はプロセスを示しています:

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

function heartbeat() {
    $.get(
        "/SessionHeartbeat.ashx",
        null,
        function(data) {
            //$("#heartbeat").show().fadeOut(1000); // Optional visual feedback
            setHeartbeat();
        },
        "json"
    );
}</code>

視覚的なフィードバックの追加 (オプション)

セッションの更新を確認するために脈動アイコンなどの視覚的なインジケーターを組み込むことで、ユーザー エクスペリエンスを向上させます。 この例ではハートのアイコンを使用しています:

<code class="language-javascript">// Animate a heart icon
function beatHeart(times) {
    var interval = setInterval(function () {
        $(".heartbeat").fadeIn(500).fadeOut(500);
    }, 1000); // Beat every second
    setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100);
}</code>

概要

専用ハンドラーへの時間指定された AJAX 呼び出しを採用すると、アクティブな ASP.NET セッションを維持するための堅牢かつ目立たない方法が提供されます。 このシンプルなテクニックにより、セッションの期限切れが早期に防止され、スムーズで中断のないユーザー エクスペリエンスが確保されます。

以上が非アクティブによる ASP.NET セッションの早期期限切れを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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