Merhaba,

Bu makalede asp.net uygulamalarında kullanılan veri saklama yöntemlerinden birisi olan Oturum (Session olarak anılacaktır) özelliğinden bahsedeceğim.

Session kullanımına geçmeden önce session ın ne olduğuna değinelim. Session web sunucularının kendilerine talepte bulunan client lara ait bilgileri sunucu üzerinde saklayabilmesini sağlayan

bir özelliktir. Session kullanım alanlarına örnek olarak e-ticaret sitelerinde kullanılan alışveriş sepetleri ve veri sayfalama verilebilir. Kullanıcılar internet tarayıcılarından bir web adresini

çağırdıklarında, web sunucusu kendisine bağlanan client için (burada client dan kasdedilen her bir internet tarayıcısıdır) benzersiz bir kimlik (unique identifier) üretir. Böylece her bir oturum

bir SessionID ile birbirinden ayrılır ve oturumların yönetimi sağlanır. Kullanıcı web uygulaması üzerinde farklı sayfalarda gezindikçe, kullanıcı için oluşturulan Session web sunucusu üzerinde

saklanır; ta ki kullanıcı uygulama üzerinde belirlenen Session yaşam süresi kadar hiçbir işlem yapmayana kadar. Bu Session yaşam döngüsü, session olayları olan Session_OnStart ve

Session_OnEnd arasında gerçekleşir.

NOT: Session_OnEnd olayı sadece in-proc modunda çalışır. State Server ve SQL Server modları bu olayı desteklemez.

Session ile ilgili bazı özellikleri sıraladıktan sonra örnek kodlarımıza geçelim;

  1. Session .NET platformlarında kolay bir kullanım sunmaktadır.
  2. Güvenilir bir session yönetiminde, IIS durmadıkça yada asp.net worker process durmadıkça veri kaybı yaşanmaz.
  3. Session yönetimi çok sunuculu veya çok işlemcili senaryolara (web farm veya web garden) destek sağlar.
  4. Session cookie desteği olmayan tarayıcılarda çalışabilir (cookiless=true)
  5. Session farklı web uygulamalarına taşınamaz.
  6. SessionID 120 bitlik ASCII karakterlerden oluşan açık bir texttir.

Session ın kaybolmasına neden olan bazı etkenler de şunlardır;

  1. IIS in durması
  2. asp.net worker process (aspnet_wp.exe) nin durması
  3. processModel e verilen hafıza limitinin dolması
  4. global.asax veya web.config dosyalarının düzenlenmesi (içeriklerinin değişmesi)
  5. Bin dosyasına yazmak
  6. Antivirüs yazılımları, global.asax,web.config veya bin dosyalarının içeriğini düzenleyebilir
  7. web garden senaryosunda in-proc modunu kullanmaya çalışmak veri kayıplarına yol açabilir

Şimdi örnek kodlarımıza geçelim;

Session özelliği .NET de SessionStateModule sınıfı (IHttpModule den türetilmiştir) sayesinde kullanımımıza sunulmakadır. Öncelikle hangi durum yönetimini kullanacağımız

web uygulamamıza belirtmemiz gerekir. bunu web.config dosyasından kolayca yapabiliriz;

InProc modu:

<configuration>
    <system.web>
        <sessionState mode="Inproc" cookieless="false" timeout="20"/>
        </sessionState>
    </system.web>
</configuration>

State Server modu

öncelikle asp.net state servisinin çalıştığından emin olmalıyız. ilgili exe yi şu yoldan bulabilirsiniz;

systemroot\Microsoft.NET\Framework\versionNumber\aspnet_state.exe

sonra web.config de yapmamız gereken düzenleme şu şekildedir;

<configuration>
   <system.web>
      <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20"/>
      </sessionState>
   </system.web>
<configuration>

SQL Server modu
öncelikle seçeceğimiz iki sql scriptinden birisini çalıştırmalıyız.
  1. InstallSqlState.sql : session verilerinin saklanacağı tabloları TempDB ye ekler. Sunucunun durması halinde session verileri kaybolur.
  2. InstallPersistSqlState.sql : session verilerini yeni oluşturduğu ASPState veritabanındaki tablolara kaydeder.Sunucunun yeniden çalışması halinde session a tekrar ulaşılabilir.

ilgili sql scriptlerine systemroot\Microsoft.NET\Framework\versionNumber yolundan ulaşılabilir. Devamında web.config dosyamızı şu şekilde düzenlemeliyiz;

<configuration>
   <system.web>
      <sessionState mode="SQLServer" sqlConnectionString="Integrated Security=SSPI;data source=127.0.0.1;" cookieless="false" timeout="20"/>
      </sessionState>
   </system.web>
</configuration>
Artık asp.net uygulamamızın sayfalarında Session ı kullanabiliriz;

Sağlıcakla kalın..
İhsan YAPRAK
ihsanyaprak[at]erciyesyazilim.com 
#
 

3 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5