SORU
5 EYLÜL 2009, CUMARTESİ


eğer geçerli oturum null Ne asp.net ?

Benim web uygulamasında, bu oturum değişkenleri okumak gibi bir şey yapıyorum:

if (HttpContext.Current.Session != null &&  HttpContext.Current.Session["MyVariable"] != null)
{
    string myVariable= (string)HttpContext.Current.Session["MyVariable"];  
}

Önemli HttpContext neden kontrol etmeni anlıyorum.Mevcut.[""] MyVariable null (değişken Oturumda henüz saklı olmayabilir veya Oturumu çeşitli nedenlerle sıfırlandı) ama neden HttpContext olmadığını kontrol etmek gerekiyor.oturum Mevcut.Oturum null.

Benim anladığım oturum otomatik olarak bu nedenle HttpContext ASP.NET tarafından oluşturulur.Mevcut.Oturum asla boş olmalıdır. Bu varsayım doğru mu? Eğer boş olabilir, bu da bir şey saklamadan önce kontrol etmem gerektiği anlamına mı geliyor:

  if (HttpContext.Current.Session != null)
{
    HttpContext.Current.Session["MyVariable"]="Test";  
}
else
{
//what should be done in this case (if session is null)?
// is it possible to force the session to be created if it doesn't exist?
}

CEVAP
5 EYLÜL 2009, CUMARTESİ


Evet, Session nesnesi boş, ama sadece nadiren içine çalışacak olan belirli koşullar, olabilir:

Eğer sadece sayfa içinde kod varsa, bu içine yayınlanmaz. Benim ASP çoğu .NET kod null için tekrar tekrar kontrol etmeden Oturumu kullanır. Ancak, eğer bir IHttpModule veya başka geliştiriyorsanız düşünmek için bir şey grittier aşağı ASP detayları .NET.

Edit

Veya oturum durumu AcquireRequestState olay isteği için aday olup olmadığını bağlı olup Olmadığını değil. yoruma cevap: Bu oturum durumu modülünün oturum tanımlama okuma ve sizin için oturum değişkenleri uygun set bularak bu işe yarıyor.

Kontrol önce AcquireRequestState çalışır sayfanıza verdi. Eğer sayfanızdan diğer işlevi, statik sınıflar da dahil olmak üzere, arıyorsanız, dolayısıyla rahat edersin.

Eğer bazı sınıflar, statik oluşturucu kullanarak Application_Start olay örneğin başlangıç sırasında veya başlatma mantığı ne, Oturum durumu müsait olmayabilir. Bu geçerli bir istek var ve AcquireRequestState çalıştırılmış olup olmadığını kaynar.

Ayrıca, müşteri, çerezleri devre dışı olmalıdır, Session nesnesi hala mevcut olacak - ama bir sonraki isteği üzerine, kullanıcı yeni boş bir Oturum ile dönecektir. Bu istemci eğer zaten bir tane var yoksa bir Oturum statebag vermiş olmasıdır. Eğer istemci oturum çerezi taşıma mı yoksa yeni bir oturum tekrar tekrar teslim olacak yani aynı istemci tanımlama olanağımız yok.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • Kupa World

    Kupa World

    1 EYLÜL 2011