2009-03-09 15 views
0

here numarasını okudum, bir inproc asp.net oturumu her erişildiğinde zaman aşımını sıfırlar (okuma veya yazma). Sorum şu, eğer sadece oturum kimliğini okuyorsam zaman aşımı da sıfırlanırsa?SessionID'ye erişilirse, ASP.Net Inproc oturumu zaman aşımı sıfırlanır mı?

Örnek: Oturum zaman aşımı 20 dk. 15 dakika sonra. etkin olmayan bir sayfa yüklüyorum ve Session.SessionID dosyasını okurum. Seans 10 dakika sonra hala devam edecek mi?

Ve bir soru daha: Sayfa doğrudan yüklendiğinde mi yoksa AJAX üzerinden mi erişilir?

cevap

2

Bana iki farklı şey karıştırıyorsunuz: Oturum durumundan (kod) bir değerin okunması, bir SessionState örneğinin geçerli İsteğe eklenmesinden farklıdır.

Çok fazla yanılmadığım sürece, bir Oturum nesnesine (kodda tekrar) eriştiğinizde zaman aşımı yenilenmez, bunun yerine yeni bir istek sunulduğunda yenilenir. Bu, SessionState öğesinin kendisi Önbelleğe eklendiğinden (ve son kullanma ilkesinin ayarlandığı için)

Sorunun yanıtlanması için şu olur: Zaman aşımı sıfırlanmayacaktır.

Verdiğiniz örnekte ayrıntılı bilgi vermek için: Zaman aşımı, SessionID'yi kodda okuduğunuzdan ziyade sayfanın yük sıfırlanacaktır.

+0

Yup, bu noktaya çarptı :-) –

+0

Belki de ... henüz oy yok! :-(;-) – Cerebrus

1

SessionID'ye erişme, oturum zaman aşımını etkilemez. Eğer Reflektör bir göz atacak olursak, (HttpSessionStateContainer uygulanan) SessionID özelliği aşağıdaki gibidir:

public string SessionID 
{ 
    get 
    { 
     if (this._id == null) 
     { 
      this._id = this._stateModule.DelayedGetSessionId(); 
     } 
     return this._id; 
    } 
} 

yatan saklanan öğeleri dokunmaz. Ayrıca, bu seviyede, isteğin nereden geldiği önemli değildir (ajax/normal).