2013-04-02 2 views
19

J'ai passé beaucoup de temps à passer au crible des conseils contradictoires sur ce problème, et j'ai pensé que je posterais ma solution.HttpModule non appelé .NET 4.5

Mon environnement est .NET 4.5, Visual Studio 2012 et fonctionne avec une application MVC 4. J'ai créé un module Http comme je l'avais fait dans le passé, et a ajouté à web.config comme ceci:

<configuration> 
<system.web> 
    <httpModules> 
    <add name="MyModule" type="Services.MyModule, Services" /> 
    </httpModules> 
</system.web> 
</configuration> 

Cependant, l'application n'a jamais appelé Init() du module. Finalement, j'ai trouvé des conseils que les modules devraient plutôt être à l'intérieur <system.webServer>, et l'élément nommé <modules> au lieu de <httpModules>, comme ceci:

<configuration> 
<system.webServer> 
    <modules> 
    <add name="MyModule" type="MyModule" type="Services.MyModule, Services" /> 
    </modules> 
</system.webServer> 
</configuration> 

Re-exécutiez l'application, et appelé Init() comme prévu. FWIW, la page avec la direction est ici: http://msdn.microsoft.com/en-us/library/ms227673.aspx

HTH

+3

Vous devez diviser votre question en 2 parties: une question et votre réponse – cheesemacfly

+0

Vous ne pouvez pas avoir deux 'types' dans la ligne Fandango68

Répondre

22

<system.web> est pour IIS 6 et au-dessous (y compris Cassini), <system.webServer> est pour IIS 7 et ci-dessus. En général, je mets à la fois - juste au cas où - puis ajoutez ce nœud à <system.webServer> il ne barf pas sur la redondance:

<validation validateIntegratedModeConfiguration="false" /> 
+1

STill ne fonctionne pas. – AgentFire

+0

c'est un super doublure! –