ブラウザ セッションが延長されると、サーバー側のセッション タイムアウトが発生することがよくあります。 この記事では、ダミー ハンドラーへの時間指定された AJAX リクエストを使用してこの問題に対処し、継続的なセッション アクティビティを確保する非侵入的な方法を紹介します。
次の jQuery コードは、5 分ごとに SessionHeartbeat.ashx
への定期的な AJAX 呼び出しを開始します。この単純な ping により、セッションのタイムアウト カウンターが更新されます。
<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>
SessionHeartbeat.ashx
この HTTP ハンドラーはセッションの有効期間を管理します。 IRequiresSessionState
を実装すると、Session オブジェクトへのアクセスが保証されます。
<code class="language-csharp">public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState { 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>
シンプルなハートビート アニメーションにより、セッションの維持を視覚的に確認できます。 次の CSS と JavaScript はこの効果を作成します。
<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>
このソリューションは、ブラウザ ウィンドウの存続期間中、ASP.NET セッションを効果的に拡張し、フォームとアプリケーションの機能を維持します。
以上が目立たない AJAX を使用して ASP.NET セッションを維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。