首頁 >後端開發 >C++ >如何使用不顯眼的 AJAX 讓 ASP.NET 會話保持活動狀態?

如何使用不顯眼的 AJAX 讓 ASP.NET 會話保持活動狀態?

Barbara Streisand
Barbara Streisand原創
2025-01-13 08:22:43927瀏覽

How Can I Keep My ASP.NET Session Alive Using Unobtrusive AJAX?

透過微妙的 AJAX 呼叫延長 ASP.NET 會話

延長的瀏覽器工作階段通常會導致伺服器端會話逾時。 本文提出了一種非侵入式方法,使用虛擬處理程序的定時 AJAX 請求來解決此問題,確保連續的會話活動。

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 設定

處理程序已在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn