2009-11-10 10 views
7

Soruma esas olarak StackOverflow üzerindeki 765054 soru ile aynıdır. Sadece tekrar soruyorum çünkü kabul edilen cevap yanlıştır (Application_BeginRequest içindeki oturum nesnesine erişemezsiniz).En erken ne zaman ASP.NET MVC sayfa yaşam döngüsünde SESSION'a erişebilirim?

Kullanım durumumuz, kimliği doğrulanmış kullanıcının kullanıcı nesnesini oturumda saklamak istediğimizdir. Dolayısıyla, sonraki istekler sırasında, IPrincipal ve IIdentity'yi oturumda kullanıcı nesnesine göre doğru şekilde ayarlayabiliriz.

+0

İlginç, ikinci bir bakmaya değer. –

cevap

3

Baz denetleyicisi kullanarak ve OnActionExecuting'i geçersiz kılan benzer şeyleri yapıyorum. Bunun en erken yapılıp yapılamayacağı, bilmiyorum, ancak eyleminizin gerçekleştirilmesinden önce gerçekleşeceğini (ve böylece görünüm oluşturulmadan önce) olduğunu biliyorum. Alternatif olarak, istediğiniz şeyi yapan özel bir yetkilendirme özelliğine sahip olmak isteyebilirsiniz. Bu, diğer özelliklerin yayınlanmasından önce yapıldığından emin olmanın tek yolu olabilir.

+0

Sadece OnActionExecuting geçersiz kılma uygulandı ve bir çekicilik gibi çalıştı. OnActionExecuting, yetkilendirme filtresinden önce çağrılır, böylece bu çözüm bizim için işe yarayacaktır. – Jason

4

Görünüşe göre AcquireRequestState, HttpContext.Current.Session'ın null olmadığı en eski olaydır. Hepsine sırayla bağlandım ve test ettim. Denetleyicimin yapıcısından önce gelen PreRequestHandlerExecute kullanmayı tercih ederim.

Bunun yerine, kodunuzu Global.asax dosyasında veya bunun yerine başvuruda bulunmak istiyorsanız, bu önemlidir. Uygulama yaşam döngüsündeki olayların ardışık listesi için bu sayfaya bakın: http://msdn.microsoft.com/en-us/library/ms178473%28v=vs.100%29.aspx

İlgili konular