Etiketler

, , ,


ASP.NET | Session Yönetimi | State Server

OTURUM (SESSION) VERİLERİNİ STATE SERVER A TAŞIMAK

Bilindiği üzere Asp.net uygulamalarında

  • Bin klasöründeki herhangi bir dosyayı
  • Web.Config içinde herhangi bir ayarı

değiştirseniz uygulama tekrar başlar (Application Restart) ve “tüm oturum ( session ) bilgileriniz” kaybolur.

Bu session problemini çözmek için session verilerinizi “InProc” tutmak yerine “State Server” yada “Sql Server” da tutmayı tercih etmelisiniz. Çünkü State Server yada Sql Server da oturum bilgilerinizi tuttuğunuzda, bu veriler uygulamanızın yönetimi haricinde bir bölgeye yazılacaktır. Dolayısıyla uygulamanızın çalışma durumunundan etkilenmeyecektir.

Oturum (session) verilerinizi State Server da tutmak için yapmanız gereken ayarlar :
1. Web.config dosyası içersinde etiketleri arasına aşağıdaki belirtilen parametreyi eklemeniz gerekmektedir.

42424: State Server için varsayılan port numarasıdır. ”

2. stateConnectionString de belirttiğiniz server da (kendi bilgisayarınız da olabilir. (local) ) , ASP.NET STATE SERVER Hizmetini (Service) başlatmanız gerekmektedir.

ASP.NET STATE SERVER Hizmetini başlatmak için :

Denetim Masası –> Yönetimsel Araçlar –> Hizmetler

e giriniz ve ASP.NET STATE SERVER hizmetini bulunuz. Çift tıklayıp özelliklerine girdiğinizde, “Başalangıç Türü” nü “OTOMATİK” olarak değiştirip, “BAŞLAT” deyip, “UYGULA” ile değişiklerinizi kaydetmeniz yeterlidir.

Yayında olan fakat sık sık “Deploy” yapılması (geliştirilmesi devam eden) gereken projelerde, kullanıcıları madur etmemek açısından tavsiye edilen bir yöntemdir.

Bu konu ile ilgili aşağıdaki bilgileri dikkate almanızı öneririm.

State server da session bilgisini saklamak istiyorsanız, session’a attığınız tüm nesneleriniz mutlaka “Serializable” olması gerekmektedir. Ağırlıklı olarak “DataTable” ı session a atıyorsanız, şanslısınızki datatable serializable bir nesnedir.

Fakat sınıflarınızı (aslında daha çok entity lerinizi) atıyorsanız, sınıflarınızı serializable yapmanız çok kolaydır. Sınıfın property sekmesinde bir serializable olup olmamasını “true / false” seçerek gerçekleştirebilirsiniz. True seçtiğinizde, sınıfınıza otomatik olarak serializable attribute eklenecektir. Ya da siz kendinizde Serializable attribute nı sınıfınıza ekleyebilirsiniz.

Bu konu ile ilgili aşağıdaki yazıları okumanızı öneririm.