확장된 브라우저 세션으로 인해 서버측 세션 시간 초과가 발생하는 경우가 많습니다. 이 기사에서는 더미 핸들러에 대한 시간 제한 AJAX 요청을 사용하여 이 문제를 해결하고 지속적인 세션 활동을 보장하는 비침해적 방법을 제시합니다.
다음 jQuery 코드는 5분마다 SessionHeartbeat.ashx
에 대한 반복 AJAX 호출을 시작합니다. 이 간단한 핑은 세션의 시간 초과 카운터를 새로 고칩니다.
<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
을 구현하면 세션 개체 액세스가 보장됩니다.
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!