Search

ASP.NET ile Session



0 yorum

ASP.NET ile Session

Session herhangi bir web sunucusuna bağlandığımızda bize verilen bir çeşit kimliktir(id). Session kelime anlamı olarak oturum demektir ve ömürleride bir oturum süresindedir. Oturum süresi bir tarayıcının başlatılmasıyla kapatılması arasında geçen süre kadardır. En önemli özelliğiyse değerleri sayfalar arasında taşıyabilmemizi sağlamasıdır. Session'ların takibi bu durumlarda Cookie aracılığı ile yapılır. Örnek olarak kullanıcı adınız ve şifrenizle girdiğiniz bir web uygulamasında, sayfalar arasında gezinmeniz, yeni pencere açmanız gibi durumlarda SessionID değeri ile sunucu tarafından tanınırsınız ve doğru sayfalara erişebilirsiniz.

Pekala kendiliğinden oluşan bu SessionID değerimize nasıl ulaşabiliriz? Bunun için ASP.NET uygulamasında "Session.SessionID" kullanılır. Bununla ilgili örnek bir ekran görüntüsü ve kodunu aşağıda veriyorum.
Response.Write("SessionID (Otomatik olarak atanan Session Kimliği): "+Session.SessionID.ToString());

Yukarıdaki kodu kullanarak bir sayfa başlattığımızda SessionID'nizi göreceksiniz. Sayfanızı yenilemeniz yada yeni pencerede açmanız durumlarındada aynı SessionID değerine sahip olduğunuzu göreceksiniz. Çünkü oturumunuz sonlanmamıştır. Ancak tarayıcınızı kapatıp geri açtığınızda oturumunuz sonlanacağı için yeni bir SessionID değeriyle karşılacaksınız.

ASP.NET ile Session Tanımlama

Şimdi kendi Session'larımızı nasıl oluşturabileceğimizi görelim. Session'ları oluşturup gönlünüzce kullanabilirsiniz. Session tanımlaması iki farklı şekilde yapılabilir.

1- Session.Add("SessionAdiniz","GirmekIstediginizDeger");
2- Session["SessionAdiniz"] = "GirmekIstediginizDeger";

Oluşturmuş olduğumuz Session'a, Session["SessionAdiniz"] yazarak erişebiliriz.

ASP.NET ile Session.TimeOut ve Session.Abandon

Tanımladığımız herhangi bir Session'ın ömrü otomatik olarak 20 dakika olarak ayarlanır. Tabi tarayıcı kapatılırsa Session ömrünün kapatılması anında sonlanmış olduğunu biliyoruz. Biz bu süreyi gönlümüzce uzatabilir yada azaltabiliriz. Session'ların sunucumuz üzerinde yük oluşturduğunu bilmemiz gerekir. Gereksiz yere çok sayıda Session'ı tutmamız bizim için sorun olacaktır. Bu yüzden farklı senaryolara göre Session TimeOut sürenizi en iyi şekilde ayarlamamız önemlidir.
Session Timeout değerini Web.config üzerinden ayarlayabiliriz. Şu şekilde ayarlıyoruz:
  

Sitemize kullanıcı adıyla giriş yapan bir kullanıcının çıkış yapması durumunda, o kullanıcıya ait oluşturduğumuz Session'ları sonlandırara sunucumuz üzerindeki yükü azaltabiliriz. Bunun için aşağıdaki kodu kullanabiliriz. Session.Abandon kullanıcıya ait Session'ların silinmesini sağlar. Tabi tek bir session silmek isteyebiliriz, bu durumdanda bahsedeceğim.
Session.Abandon();

Session'ların takibinin Cookie'ler aracılığı ile yapıldığndan söz etmiştim, peki bazı kullanıcılar Cookie'lerin oluşmasını engellerlerse ne olacak? Tarayıcı ayarları Cookie'ler hakkında karar verebilmemize olanak tanımaktadırlar. Bu gibi durumlarda Session'ların Cookie olmadan kullanılması gerekebilir. Bunun için web.config içerisinde şu değişikliği yapmamız gerekiyor:

Bu şekilde yazarak Cookie olmadan kullanım sağlanmış olur. Ancak URL üzerinde SessionID değeri görüntülenecektir. SessionID URL ile taşınmış olur.


ASP.NET ile Session Remove

Oluşturmuş olduğumuz özel bir Session'ı silmek isteyebiliriz. Bu durumdaysa Session.Remove özelliğinden faydalanabiliriz.
Session.Remove("SessionAdiniz");


0 yorum:

Yorum Gönder

Check Page Rank
DMCA.com