SORU
16 EYLÜL 2009, ÇARŞAMBA


ASP.NET Oturumu Açık tutmak / Hayatta

Hangi ASP.NET oturumu canlı olarak kullanıcının tarayıcı penceresinin açık olduğu sürece tutmak için en unobstrusive en kolay yolu nedir? AJAX yapılan aramalara mi? Aşağıdaki önlemek istiyorum: kullanıcıların pencere uzun süre açık tutmak bazen, bir şeyler sonra girin ve Gönder hiç bir şey sunucu tarafı oturum süresi doldu çünkü artık çalışıyor. Kapalı oturumlar (tarayıcı penceresini kapatarak) hızlı zaman istediğim gibi sunucuda fazla 10 dakika için zaman aşımı değerini artırmak için istemiyorum.

Kod önerileri örnekleri?

CEVAP
16 EYLÜL 2009, ÇARŞAMBA


Bir WordPress kullanmak benim Oturumu canlı tutmak ama hiçbir şey yapmayan sahte bir HTTP İşleyicisi için basit bir AJAX arama gerçekleştirmek için kullanın:

function setHeartbeat() {
    setTimeout("heartbeat()", 300000); // every 5 min
}

function heartbeat() {
    $.get(
        "/SessionHeartbeat.ashx",
        null,
        function(data) {
            //$("#heartbeat").show().fadeOut(1000); // just a little "red flash" in the corner :)
            setHeartbeat();
        },
        "json"
    );
}

Oturum işleyicisi kadar basit olabilir:

public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState
{
    public bool IsReusable { get { return false; } }

    public void ProcessRequest(HttpContext context)
    {
        context.Session["Heartbeat"] = DateTime.Now;
    }
}

Anahtar IRequiresSessionState ekleyin, aksi takdirde Oturum mevcut (= geçersiz) olmaz. İşleyici bazı veriler çağıran JavaScript iade edilirse tabii ki de JSON seri hale getirilmiş bir nesne döndürür.

Web üzerinden kullanılabilir.config:

<httpHandlers>
    <add verb="GET,HEAD" path="SessionHeartbeat.ashx" validate="false" type="SessionHeartbeatHttpHandler"/>
</httpHandlers>

eklendiAğustos balexandre 14, 2012

HTML/CSS ve tempo bölümünü geliştirmek istiyorum bu örnek çok hoşuma gitti

bu değişiklik

//$("#heartbeat").show().fadeOut(1000); // just a little "red flash" in the corner :)

içine

beatHeart(2); // just a little "red flash" in the corner :)

ve ekleyin

// beat the heart 
// 'times' (int): nr of times to beat
function beatHeart(times) {
    var interval = setInterval(function () {
        $(".heartbeat").fadeIn(500, function () {
            $(".heartbeat").fadeOut(500);
        });
    }, 1000); // beat every second

    // after n times, let's clear the interval (adding 100ms of safe gap)
    setTimeout(function () { clearInterval(interval); }, (1000 * times)   100);
}

HTML ve CSS

<div class="heartbeat">♥</div>

/* HEARBEAT */
.heartbeat {
    position: absolute;
    display: none;
    margin: 5px;
    color: red;
    right: 0;
    top: 0;
}

işteörnek yaşamaksadece dayak kısmı için: http://jsbin.com/ibagob/1/

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009
  • optionalinfo

    optionalinfo

    29 EKİM 2005