セッション管理による ASP.NET でのデータ損失の防止
一貫したユーザー セッションを維持することは、スムーズなユーザー エクスペリエンスを実現し、ASP.NET アプリケーションでのデータ損失を防ぐために重要です。 標準の ASP.NET セッションには時間ベースの有効期限があるため、ユーザーがブラウザ ウィンドウを開いたまま長時間放置すると、データが失われる可能性があります。 この記事では、この問題に対処するための「ハートビート」ソリューションについて詳しく説明します。
セッション ハートビートのアプローチ
堅牢なソリューションには、「ハートビート」メカニズムの実装が含まれます。 これには、サーバー側ハンドラーへの定期的で影響の少ない 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>
サーバー側ハンドラー
サーバー側コンポーネントである HTTP ハンドラーは、これらのハートビート要求を受信し、セッションの LastAccessedTime
:
<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 構成
ハンドラーを 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">// Animated heartbeat visual cue function beatHeart(times) { var interval = setInterval(function () { $(".heartbeat").fadeIn(500, function () { $(".heartbeat").fadeOut(500); }); }, 1000); // Beat every second setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100); // Clear after 'times' beats }</code>
このアプローチは、ハートビート機能を視覚的に示します。
<code class="language-html"><div><p>This method keeps the ASP.NET session active as long as the browser window is open, without modifying the server-side session timeout.</p></div></code>
以上がデータ損失を防ぐために ASP.NET でセッションの継続性を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。