2010-01-21 7 views
5

Mam prosty moduł HTTP, który wykonuje niektóre niestandardowe zarządzanie stanami sesji.JS, Obrazy i CSS są przechwytywane przez moduł HTTPModule

public void Init(HttpApplication context) 
     { 
      context.AcquireRequestState += new EventHandler(ProcessBeginRequest); 
      ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In Init " + HttpContext.Current.Request.Url.AbsoluteUri); 
     } 

i

public void ProcessBeginRequest(object sender, EventArgs e) 
     { 
      HttpApplication application = sender as HttpApplication; 
      ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest "); 
      if (application != null) 
      { 
       string requestURL = application.Context.Request.Url.ToString(); 
       ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest " + requestURL); 
      } 
      return; 
     } 

Kiedy wpadłem ten kod z pułapki, widziałem, że moduł ten został wywołany, nawet dla plików statycznych, takich jak obrazy, js i css. Czy ktoś tego doświadczył? Sądzę, że moduły HTTP podpinały tylko zdarzenia w potoku http dla stron asp.net. Czy oni również przechwytują statyczne zasoby? Czy to tylko z cassini?

Środowisko: VS2008 - serwer cassini

PS: Próbowałem go Win2k8 IIS7 w naszej piaskownicy (trochę nowy), i starał się zapisywać do pliku logu (jak nie mamy VS tam), ale nie można zapisać w pliku dziennika. Jestem pewien, że jest to problem związany z prawem zapisu. Czy ktoś może wskazać mi jakiś zasób, który mówi mi, jak ustawić uprawnienia do zapisu dla katalogów podczas uruchamiania ASP.NET z IIS7 w W2k8

Edit1: Rozumiem, że za pomocą zintegrowanego rurociąg będzie przedłużyć rurociąg http dla statycznych i zarządzanych zasobów zarówno http://aspnet.4guysfromrolla.com/articles/122408-1.aspx i http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/

Używamy klasycznego rurociągu w naszym prod. Ale nadal zainteresowany wiedzą, co inni ludzie doświadczyli.

Pytanie2: Czy korzystanie z IIS7 w trybie zintegrowanym zmniejszy wydajność? Powiedzmy, że kilka modułów łączy się z potokiem, ile będzie miało oddziaływanie na wydajność? Byłoby miło, gdyby ktoś wskazał mi jakieś podstawowe badania wykonane w tym celu.

Odpowiedz

12
+0

dzięki. dodał to do todo dla http://cassinidev.codeplex.com –

+0

Twoja "uwaga do siebie" jest solidnym złotem! Awans! – jerhewet

+0

Czy istnieje dobry sposób na osiągnięcie tego w IIS6? Wiem, że jest to trochę niezwiązane z pytaniem, ale byłoby dobrym odnośnikiem dla kogoś, kto ląduje tutaj, tak jak ja, z powodu samego tytułu pytania. –

0

Tak, będzie wywoływany dla dowolnego typu plików.

Typowe w tych modułach odfiltrowanie tego, na co nie jesteś zainteresowany. sprawdzając, czy HttpContext.Request.Url.AbsolutePath zawiera "/ _layouts" w SharePoint.

+0

Czy istnieje sposób skonfigurować moduły takie, że tylko oni się podłączyć do rurociągu dla poszczególnych rozszerzeń (jak aspx lub ASMX lub moim niestandardowym ashx)? – ram

+0

Ta odpowiedź jest specyficzna dla serwera sieciowego ASP.NET Development (Cassini) - twoje pytanie wspomina o IIS7 i Cassini. Cassini przekieruje WSZYSTKIE żądania do dowolnego HttpModules.Zauważ, że jest to inne zachowanie niż IIS6 lub IIS7 (potrzebna jest inna konfiguracja, aby uzyskać takie samo zachowanie na każdym) – Adam