J'ai un module dans une application ASP.NET MVC. Le module fonctionne bien, mais il se déclenche pour chaque type de fichier, y compris le contenu statique, même si j'ai :
<modules runAllManagedModulesForAllRequests="false">
<add name="MyModule" ... / >
</modules>
Le module accroche les événements AcquireRequestState et PostRequestHandlerExecute et tous deux affichent un contenu statique (.htm, .css, .png, etc.).
J'avais l'impression que runAllManagedModulesForAllRequests="false" devrait empêcher les modules de se déclencher sur du contenu non-ASP.NET.
Pour plus de clarté :
I peut définir preCondition="managedHandler" comme ceci :
<add name="MyModule" type="MyApp.MyModule" preCondition="managedHandler" />
et de faire en sorte que mon module n'envoie que des requêtes gérées.
Cependant, j'essaie de comprendre pourquoi le pipeline IIS en général déclenche des hits de modules gérés pour chaque requête. Je pense que cela fonctionnait très bien dans les anciennes versions où, à moins que runAllManagedModulesForAllRequests="true", le contenu non géré n'était pas envoyé dans les modules ASP.NET.
Exécution sur IIS8 sous Windows 8 64 bit, avec mode pipeline intégré.
Mise à jour :
Après quelques recherches supplémentaires, il s'avère que ce qui suit est vrai :
- si runAllManagedModulesForAllRequests="true", tous les modules - indépendamment de leur attribut preCondition - se déclenchent pour toutes les requêtes. Ceci est également vrai pour les événements Application_XXXX mis en œuvre sur l'application HttpApplication
- runAllManagedModulesForAllRequests="false" n'a pas pour effet d'empêcher les requêtes non gérées d'atteindre les modules, sauf si preCondition="managedHandler" est défini
- runAllManagedModulesForAllRequests="false" affecte les événements de Application_XXXX, en faisant en sorte que ces événements ne se déclenchent que sur les requêtes gérées. En d'autres termes, Application_XXXX se comporte comme si l'implémentation du module avait une preCondition="managedHandler"
Pour plus d'informations à ce sujet, j'ai publié un article de blog : http://www.west-wind.com/weblog/posts/2012/Oct/25/Caveats-with-the-runAllManagedModulesForAllRequests-in-IIS-78