Mencegah Kehilangan Data dalam ASP.NET melalui Pengurusan Sesi
Mengekalkan sesi pengguna yang konsisten adalah penting untuk pengalaman pengguna yang lancar dan mengelakkan kehilangan data dalam aplikasi ASP.NET. Sesi ASP.NET standard mempunyai tamat tempoh berasaskan masa, yang membawa kepada potensi kehilangan data jika pengguna membiarkan tetingkap penyemak imbas terbuka untuk tempoh yang lama. Artikel ini memperincikan penyelesaian "degupan jantung" untuk menangani isu ini.
Pendekatan Denyutan Jantung Sesi
Penyelesaian yang mantap melibatkan pelaksanaan mekanisme "degupan jantung". Ini melibatkan penggunaan panggilan AJAX berimpak rendah berkala kepada pengendali bahagian pelayan. Panggilan ini secara berkesan menetapkan semula tamat masa sesi, mengekalkan status aktif sesi selagi tetingkap penyemak imbas kekal terbuka.
Pelaksanaan Denyutan Jantung (Pihak Pelanggan)
Menggunakan jQuery, degupan jantung yang mudah boleh dilaksanakan:
<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>
Pengendali Sebelah Pelayan
Komponen sebelah pelayan, pengendali HTTP, menerima permintaan degupan jantung ini dan mengemas kini sesi 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>
Konfigurasi Web.config
Daftarkan pengendali dalam web.config
anda:
<code class="language-xml"><httphandlers> <add path="SessionHeartbeat.ashx" type="SessionHeartbeatHttpHandler" validate="false" verb="GET,HEAD" /> </httphandlers></code>
Denyutan Jantung Dipertingkat dengan Maklum Balas Visual
Untuk maklum balas pengguna yang dipertingkatkan, degupan jantung yang lebih canggih menggunakan CSS dan 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>
Pendekatan ini memberikan petunjuk visual kefungsian degupan jantung.
<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>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Kesinambungan Sesi dalam ASP.NET untuk Mencegah Kehilangan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!