透過會話管理防止 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中文網其他相關文章!