ASP.NET Durum Yönetimi - Session

Türkçe anlamı oturum olan Session'lar ASP.NET durum yönetimi kavramlarından biridir. Veri saklamak ve istediğimiz alanlarda kullanmak amacıyla kullanılır.

Yaygın olarak üyelik işlemlerinde giriş yaptıktan sonra Ad ve Soyad bilgisini en üstte tutmak veya oturum süresince site içerisinde işlemler yapmamız gereken durumlarda kullanılır.

Session,verilerin sunucu tarafında tutulup,işlendiği bir durum yönetim kontrolüdür. Session nesnesi oluşturulduğu zaman her yerde kullanabilir,sayfalar arasında kullanabiliriz.Sunucu'da bu nesne için yer açılmış olur.

İki şekilde session tanımlayabiliriz.
Session["sessionAdi"] = deger; //Kullanım 1
Session.Add("sessionAdi",deger);//Kullanım 2

Session degerini okuma yöntemi olarak label'in text özelliğine session değerimizi yazdırıyoruz. Öncesinde session olup olmadığını kontrol ediyoruz.Eğer null değilse label'de session'un değerini göstereceğiz.
if (Session["SessionAd"].ToString() != null)
{
   Label1.Text = "Değer:" + Session["SessionAd"].ToString();
}

Sessionların yaşam süresine günlük hayattan kullanıcının login olduğu süreden logout olduğu süreye kadar olan süre(oturum süresi) diye düşünebiliriz. Bu süre default olarak 20 dakikadır. Fakat oturum süresini ayarlayabiliriz. eğer 45 dk olarak ayarlamak istersek uygulamamızda bulunan web.config'de bulunan sessionState tagının timeout özelliğine 45 olarak atayabiliriz. 45 burada dk cinsinden tanımlanmıştır.

Session sürelerini iyi ayarlamamız performans açısından da önemli bir kazanç olacaktır. Eğer 45 dk'dan önce çıkış yaparsa session nesnesinin ömrü 45 dk olduğundan, bu süre sonuna kadar sunucu tarafında bu nesne durmaya devam edecek ve sunucu üzerinde yük oluşturacaktır. Eğer 45 dk'yı geçerse de oturum kapanacak ve kullanıcı tekrar giriş yapmak zorunda kalacaktır.
<configuration>
  <system.web>
    <sessionState timeout="45">
         <!--Oturum süresi 45 dk dır-->
    </sessionState>
    <compilation debug="true" targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
  </system.web>
</configuration>

Oturum kapatmak demek session nesnesinin silinmesi demektir. Bütün sessionları silebileceğimiz gibi belirlediğimiz bir session nesnesini de silebiliriz.
Session.Remove("sessionAdi");
//sessionAdi session nesnesi silindi.

Session.Abandon();
//Kullanıcıya ait bütün session nesnelerini silen metottur.

Örnek bir kullanıcı girişi ve kullanıcıya ait ana sayfasına yönlendirme yapacağız. Kütüphane Otomasyon Sistemi uygulamamızda üyemizin sisteme giriş yaptıktan sonra üyenin ad ve soyad bilgisinin sağ üst köşede oturum süresince ve sayfalarda gezinirken bulunmasını göreceğiz. Bu işlemi session ile yaptık.

Önce sisteme giriş yapan kodlarımızı yazdık.Giriş yapılırken veritabanında kullanıcı adı ve şifremizin doğruluğunu kontrol ettik eğer kayıtlarla eşleşiyorsa, session oluşturuyoruz ve değerine ad ve soyad birleşimi olan DataTable'ın FullName kolonunu atıyoruz.Bu işlemin sonunda kullanıcıya ait anasayfaya yönlendiriyor.
loginpage

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session.Abandon();
            }
        }
        protected void BtnGiris_Click(object sender, EventArgs e)
        {
            DataTable dt = KütüphaneQueries.KullaniciGiris(txtUser.Text,txtPass.Text);
            DataTable dtPersonel = KütüphaneQueries.KullaniciGirisPersonel(txtUser.Text, txtPass.Text);
          
            if (dt.Rows.Count > 0)
            {
                Session["Username"] = dt.Rows[0]["FullName"].ToString();
                Response.Redirect(@"\Member\AnaSayfa.aspx");
            }          
            else
            {
                lblDurum.Text = "Yanlış bilgi girişi yaptınız, tekrar deneyin";
            }
        }

anasayfa

odunc

Kullanıcı girişi sonrasında sağ üst köşede üye adı ve soyadını görebiliyoruz.Üstteki görsellerde ise üyemizin yetkili olduğu iki sayfa var 1. resim Ana Sayfa, 2.resim ise Ödünç ekranı; üye, bu ekranda ödünç aldığı kitapların durumlarını görebiliyor.
Session'un amacına uygun olarak iki sayfada da oturum süresince ad soyad bilgisinin duruyor olmasıdır.Bunu sağlayan kodlar ise aşağıdaki gibidir. Eğer session varsa ad soyad bilgisi ilgili alana yazdırılacaktır.
   protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Username"] != null)
            {
                lblMember.Text = Session["Username"].ToString();
            }
            else
            {
                Response.Redirect("..\\Giris.aspx");
            }
        }

Yorumlar