使用 AJAX 延長 ASP.NET 會話
維護活動的 ASP.NET 會話對於流暢的使用者體驗至關重要。 穩健的方法利用 AJAX 呼叫定期刷新會話,防止逾時。
實現 AJAX 會話心跳
此方法採用 jQuery AJAX 調用,對專用 HTTP 處理程序重複進行(例如,每 5 分鐘一次):「SessionHeartbeat.ashx」。該處理程序的唯一目的是會話維護。 該處理程序的 C# 程式碼是:
<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>
對應的客戶端JavaScript函數是:
<code class="language-javascript">function setHeartbeat() { setTimeout("heartbeat()", 5*60*1000); // Every 5 minutes } function heartbeat() { $.get( "/SessionHeartbeat.ashx", null, function(data) { setHeartbeat(); }, "json" ); }</code>
增強使用者介面
為了獲得視覺回饋(以及持續的會話維護),我們可以加入 CSS 和 HTML:
<code class="language-javascript">function beatHeart(times) { var interval = setInterval(function () { $(".heartbeat").fadeIn(500, function () { $(".heartbeat").fadeOut(500); }); }, 1000); // Beat every second // Clear interval after 'times' iterations (with 100ms buffer) setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100); } /* HEARBEAT CSS */ .heartbeat { position: absolute; display: none; margin: 5px; color: red; right: 0; top: 0; }</code>
AJAX 會話心跳的優點
以上是AJAX 呼叫如何讓 ASP.NET 會話保持活動狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!