Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengekalkan Sesi ASP.NET Saya Menggunakan AJAX yang Tidak Menyentuh?

Bagaimanakah Saya Boleh Mengekalkan Sesi ASP.NET Saya Menggunakan AJAX yang Tidak Menyentuh?

Barbara Streisand
Barbara Streisandasal
2025-01-13 08:22:43927semak imbas

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

Memanjangkan Sesi ASP.NET dengan Panggilan AJAX Halus

Sesi penyemak imbas yang dilanjutkan selalunya membawa kepada tamat masa sesi sebelah pelayan. Artikel ini membentangkan kaedah tidak mengganggu menggunakan permintaan AJAX bermasa kepada pengendali tiruan untuk menangani isu ini, memastikan aktiviti sesi berterusan.

Butiran Pelaksanaan AJAX

Kod jQuery berikut memulakan panggilan AJAX berulang ke SessionHeartbeat.ashx setiap lima minit. Ping mudah ini menyegarkan kaunter tamat masa sesi.

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

Pengendali Sesi: SessionHeartbeat.ashx

Pengendali HTTP ini menguruskan jangka hayat sesi. Melaksanakan IRequiresSessionState menjamin akses objek Sesi.

<code class="language-csharp">public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState
{
    public void ProcessRequest(HttpContext context)
    {
        context.Session["Heartbeat"] = DateTime.Now;
    }
}</code>

Konfigurasi Web.config

Pengendali berdaftar di web.config:

<code class="language-xml"><httphandlers>
  <add path="SessionHeartbeat.ashx" type="SessionHeartbeatHttpHandler" validate="false" verb="GET,HEAD" />
</httphandlers></code>

Meningkatkan Pengalaman Pengguna dengan Maklum Balas Visual

Animasi degupan jantung yang ringkas memberikan pengesahan visual penyelenggaraan sesi. CSS dan JavaScript berikut mencipta kesan ini.

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

Penyelesaian ini memanjangkan sesi ASP.NET secara berkesan untuk tempoh tetingkap penyemak imbas, mengekalkan kefungsian borang dan aplikasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Sesi ASP.NET Saya Menggunakan AJAX yang Tidak Menyentuh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn