2009-07-20 18 views
6

üzerinde statik içerikten çalışmasına izin verilmiyor Kimlik Doğrulama HttpModule'imle ilgili bir sorunum var. Sorun şu ki, web sunucumda (IIS7) aldığım her istek için açık bir şekilde çalışıyor. Ayrıca, Session değişkenini kullandığı için CSS, JS dosyaları ve benzerleri üzerinde düzgün çalışmaz. HttpModule uygulamasının IIS7

ben kullanmaya çalıştı:

<add name="AuthModuleName" type="..." preCondition="managedHandler" /> 

ama boşuna. Uzantısı veya mime türü ne olursa olsun hala her istekte çalışır. Ben de var, eklemek gerekir bir ayar bana şüpheli ve modüller üzerinde gerçekten devre önkoşulları görünüyordu

<modules runAllManagedModulesForAllRequests="true"> 

. Ancak bunu yanlış olarak değiştirmek, uygulamayı tamamen farklı bir şekilde ve farklı bir istisna ile keser (SessionStateTempDataProvider, SessionState öğesinin etkinleştirilmesini gerektirir).

Statik içerik dosyaları için istekte bulunulduğunda IIS7'yi HttpModule'imi hariç tutmak için nasıl zorlanmam gerekiyor?

+0

BTW, bunun IIS7 ve ASP.NET Geliştirme Sunucusu değil, doğru olduğuna emin misiniz? Sadece iki kere kontrol ediyorum. –

+0

bir şekilde "= runAllManagedModulesForAllRequests false" Ben çalışmak yapmak zorunda ... Ben PostAcquireRequestState içinde ... –

cevap

3

runAllManagedModulesForAllRequests nitelik aslında herhangi modülünü istediğiniz şekilde yapılandırmak için sahte olarak ayarlanmış olması gerekir. Ayrıca, Oturum ve diğerlerini gerektiği gibi yeniden yapılandırmanız gerekir, ancak asıl önemli olan, istekleri işleyen işleyicilerin boru hattı yürütme siparişidir.

cevap one of my other questions sağlandı: düzgün çalışan cevabı sağlanan Peter

teşekkür ederiz.

1

Bunun için bir IIS7 ayarını bilmiyorum, ancak bunu yapabilirsiniz.

oturumu nesnesi, yalnızca statik olmayan içerik için kullanılabilir:

void yourEventHandler(object sender, EventArgs e) { 
    HttpApplication app = (HttpApplication)sender; 
    if (app.Context.Session == null) { 
     return; 
    } 
    // then your code here... 
} 

Bu kod vb JS CSS gibi dosyalar için çalışacak olmayacak sağlayacaktır Fakat seans nesne akılda olacak tutmak Ayrıca PostAcquireRequestState olayından önce hazır olmayabilir. (HttpApplication olayların sırasına için this page bkz.)

Düzenleme: (Ben senin soru IIS7 söyledi biliyorum rağmen) Ayrıca, ASP.NET Development Server görünür, senin HttpModule'ü bile hala aday olacak statik dosyalar.

+0

Evet ben hallediyorum Oturum şeyler% 100 eminim ... Ama yine de tamamen benim modülü dışlamak mümkün olduğunu düşünüyorum . Çünkü bu, modülümü HER istek üzerine çalışacak şekilde ayarlıyor. –

+0

Bu yaklaşım, oturumu kullanmayan sayfalarla çalışmaz. – ygormutti