在.NET 4.5中没有调用HttpModule

tim*_*ice 21 httpmodule asp.net-mvc-4 visual-studio-2012

花了很多时间来筛选关于这个问题的矛盾建议,并认为我会发布我的解决方案.

我的环境是.NET 4.5,Visual Studio 2012,用于MVC 4应用程序.我像过去一样创建了一个Http模块,并将其添加到Web.config中,如下所示:

<configuration>
 <system.web>
  <httpModules>
   <add name="MyModule" type="Services.MyModule, Services" />
  </httpModules>
 </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但是,应用程序从未调用模块的Init().最后,我发现建议模块应该在内部<system.webServer>,并且命名的元素<modules>代替<httpModules>,如下:

<configuration>
 <system.webServer>
  <modules>
   <add name="MyModule" type="MyModule" type="Services.MyModule, Services" />
  </modules>
 </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

重新运行应用程序,它按预期调用Init().FWIW,方向页面在这里:http: //msdn.microsoft.com/en-us/library/ms227673.aspx

HTH

rob*_*ich 25

<system.web>适用于IIS 6及更低版本(包括Cassini),<system.webServer>适用于IIS 7及更高版本.我通常都放入 - 以防万一 - 然后添加此节点,<system.webServer>以便它不会对冗余进行barf:

<validation validateIntegratedModeConfiguration="false" />
Run Code Online (Sandbox Code Playgroud)