【问题标题】:HttpModule not called in .NET 4.5.NET 4.5 中未调用 HttpModule
【发布时间】:2013-04-02 15:34:23
【问题描述】:

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

我的环境是 .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>

但是,应用程序从未调用模块的 Init()。最终,我发现模块应该在 &lt;system.webServer&gt; 中,并且元素命名为 &lt;modules&gt; 而不是 &lt;httpModules&gt;,如下所示:

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

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

HTH

【问题讨论】:

  • 你应该把你的问题分成两部分:一个问题和你的答案

标签: asp.net-mvc-4 visual-studio-2012 httpmodule


【解决方案1】:

&lt;system.web&gt; 用于 IIS 6 及更低版本(包括 Cassini),&lt;system.webServer&gt; 用于 IIS 7 及更高版本。我通常将两者都放入——以防万一——然后将此节点添加到&lt;system.webServer&gt;,这样它就不会因为冗余而烦恼:

<validation validateIntegratedModeConfiguration="false" />

【讨论】:

  • 这是一个伟大的班轮!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
相关资源
最近更新 更多