2010-01-21 7 views
5

J'ai un HTTPModule simple qui effectue une gestion d'état de session personnalisée.JS, Images et CSS interceptés par HTTPModule

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

et

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; 
     } 

Quand je courais ce code avec des points d'arrêt, j'ai vu que ce module se est invoqué, même pour les fichiers statiques comme des images, js et css. Quelqu'un at-il vécu cela? Je pense que les modules HTTP ne faisaient qu'accrocher aux événements du pipeline http pour les pages asp.net. Croient-ils aussi à des ressources statiques? Ou est-ce juste avec cassini?

Environnement: VS2008 - serveur Cassini

PS: Je l'ai essayé avec win2k8 IIS7 dans notre bac à sable (un peu nouveau), et a essayé de l'écrire dans un fichier journal (comme nous n'avons pas VS là-bas), mais n'a pas pu écrire dans le fichier journal. Je suis sûr que c'est un problème d'autorisations d'écriture. Quelqu'un peut-il me pointer vers une ressource qui me dit comment configurer les permissions d'écriture pour les répertoires lors de l'exécution ASP.net avec IIS7 dans W2k8

Edit1: Je comprends que l'utilisation de pipeline intégré étendrait les pipelines http pour les ressources statiques et gérées aussi bien http://aspnet.4guysfromrolla.com/articles/122408-1.aspx et http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/

Nous utilisons le pipeline classique dans notre prod. Mais toujours intéressé à savoir ce que les autres ont vécu.

Question2: L'utilisation d'IIS7 en mode intégré réduit-elle les performances? Supposons que vous ayez quelques modules reliés au pipeline, quel serait l'impact sur les performances? Serait gentil si quelqu'un peut me diriger vers quelques études de base faites pour cela.

Répondre

12
+0

merci. ajouté ceci au todo pour http://cassinidev.codeplex.com –

+0

Votre "note à soi" est en or massif! Upvotes! – jerhewet

+0

Existe-t-il un bon moyen d'y parvenir dans IIS6? Je sais que c'est un peu sans rapport avec la question, mais ce serait une bonne référence pour quelqu'un qui débarque ici, comme moi, à cause du seul titre de la question. –

0

Oui, il sera appelé pour tout type de fichiers.

Il est typique dans ces modules de filtrer tout ce qui ne vous intéresse pas par exemple. en vérifiant si HttpContext.Request.Url.AbsolutePath contient '/ _layouts' sous SharePoint.

+0

Est-il possible configurer les modules tels qu'ils ne s'accroché à la conduite pour des extensions spécifiques (comme ASPX ou asmx ou mon ashx personnalisé)? – ram

+0

Cette réponse est spécifique au serveur Web de développement ASP.NET (Cassini) - votre question mentionne IIS7 et Cassini. Cassini acheminera TOUTES les demandes vers n'importe quel HttpModules.Notez que ce comportement est différent de celui de IIS6 ou IIS7 (besoin d'une configuration différente pour obtenir le même comportement sur chacun) – Adam