>백엔드 개발 >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 코드는 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 구성

핸들러는 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으로 문의하세요.