花了很多时间来筛选关于这个问题的矛盾建议,并认为我会发布我的解决方案.
我的环境是.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