Bir ASP.NET MVC 4 uygulamasında oturumlar nasıl kullanılır?
ASP.NET MVC'de yeniyim. Daha önce PHP kullandım ve bir oturum oluşturmak ve mevcut oturum değişkenlerine göre kullanıcı kayıtlarını seçmek kolaydı.
C# ASP.NET MVC 4 uygulamamda oturumları nasıl oluşturacağımı ve kullanacağımı gösterebilecek basit bir adım adım öğretici için İnternet'te her yere baktım. Denetleyicilerimin herhangi bir yerinden erişebileceğim kullanıcı değişkenleriyle bir oturum oluşturmak ve değişkenleri LINQ sorgularımda kullanabilmek istiyorum.
-Şimdiden teşekkürler!
103
3
Deneyin
Web'in durumsuz doğası nedeniyle oturumlar, nesneleri serileştirip bir oturumda saklayarak istekler arasında kalıcı hale getirmenin son derece kullanışlı bir yoludur.
Bunun mükemmel bir kullanım örneği, uygulamanız genelinde düzenli bilgilere erişmeniz gerekiyorsa, her istekte ek veritabanı çağrılarından tasarruf etmek için bu veriler bir nesnede saklanabilir ve her istekte bu şekilde serileştirilebilir:
Yeniden kullanılabilir, serileştirilebilir nesnemiz:
Kullanım durumu:
Bu nesne serileştirildikten sonra, onu oluşturmaya veya içindeki veriler için veritabanını tekrar sorgulamaya gerek kalmadan tüm denetleyicilerde kullanabiliriz.
Dependency Injection kullanarak oturum nesnenizi enjekte edin
İdeal bir dünyada 'bir arayüze programlayın, uygulamaya değil' ve serileştirilebilir oturum nesnenizi, seçtiğiniz Inversion of Control kapsayıcınızı kullanarak denetleyicinize enjekte edersiniz (bu örnekte StructureMap kullanıldı, çünkü benim en aşina olduğum bu).
Daha sonra bunu
Global.asax.cs
dosyanıza kaydedersiniz.Oturum nesnelerinin enjekte edilmesine aşina olmayanlar için konuyla ilgili daha ayrıntılı bir blog yazısı bulabilirsiniz burada.
Bir uyarı:
Oturumların minimumda tutulması gerektiğini belirtmek gerekir, büyük oturumlar performans sorunlarına neden olmaya başlayabilir.
Ayrıca, içlerinde herhangi bir hassas veri (şifreler vb.) saklamamanız önerilir.
ASP.NET ve ASP.NET MVC'de oturum durumu bu şekilde çalışır:
ASP.NET Oturum Durumuna Genel Bakış
Temel olarak, bunu Session nesnesinde bir değer saklamak için yaparsınız:
Değeri almak için: