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 サイトの他の関連記事を参照してください。