2011-02-11 10 views
7

Büyük bir kullanıcı tabanı ve oldukça yüksek günlük ziyaretçi sayısıyla asp.net webforms + mvc3'te yazılmış oldukça büyük bir projeyi yönetiyorum. Temel olarak, herhangi bir anda birçok istek var. kolları MVC benim kontrolörleri/içindeMVC 3'teki SessionState özniteliği düzgün çalışıyor mu?

Bir anında görüntü şu özellik kendisine uyguladığı boyutlandırır:

[SessionState(SessionStateBehavior.Disabled)] 

Şimdi, denetleyici bir eylem oturumu erişmeye çalıştığında - Açıkçası atar Bir istisna - bu yüzden çok iyiyiz.

Sorun şu ki: IIS Çalışan İşlemleri penceresine (Win Server 2008 R2, IIS 7.5) gidip bu sitenin şu anki isteklerini kontrol edersem, bazen bu denetleyicide bir eylem isteğini görebilirim. Mevcut durumu State: RequestAcquireState, Module Name: Session'da kilitlenmiştir. Bazen bu kilitler bu durumda ikinci veya ikiyi geçer.

Denetleyiciden gelen istekleri ilk önce devletin görmezden gelmesini sağlamak için öznitelik noktasının tamamı değil miydi, ve devleti elde etmeye çalışmak için zaman kaybetmemek (ve muhtemelen kilitlenmek) değil miydi?

Eğer öyleyse - burada yanlış bir şey yapıyorum mu, yoksa sorun başka bir yerde mi yatıyor? [Yorumlardan göç]

+0

Merhaba Levi, bunu bir cevap verebilir miydiniz diye işaretleyebilir miyim? :) –

cevap

12

özel bir kontrolör fabrika veya rota işleyicisi kullanıyorsanız, bunlar kontrolörün Oturum durumu bilincindeyim emin olun. Bir denetleyiciyi oturum durumu gerektirmeyen olarak işaretlemek, bu bileşenlerin her ikisinden de işbirliği gerektirir. Kutudan çıktı, DefaultControllerFactory ve MvcRouteHandler bununla çalışmak için tasarlanmıştır. Daha fazla bilgi için bkz. DefaultControllerFactory.GetControllerSessionBehavior ve MvcRouteHandler.GetHttpHandler. Özel bileşenler yazıyorsanız, bu yöntemleri ilham olarak kullanabilirsiniz.

+1

Harika cevap! IRouteHandler'den türetilen özel bir rota işleyicisini kullandım. İşleyicimi MvcRouteHandler yerine türetmek için değiştirdim ve temel uygulamayı geçersiz kılmalarımla birlikte kullandığınızdan emin oldum. Teşekkürler :) –

+1

Ding ding ding ding. O adama bir ödül ver –

İlgili konular