延長的瀏覽器工作階段通常會導致伺服器端會話逾時。 本文提出了一種非侵入式方法,使用虛擬處理程序的定時 AJAX 請求來解決此問題,確保連續的會話活動。
以下 jQuery 程式碼每五分鐘啟動一次 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中文網其他相關文章!