我的自定义httpModule未被MVC检测到

时间:2013-06-28 11:44:20

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 httpmodule

我已经创建了一个自定义模块:

namespace KittenFarm.ServerModules
{
    public class CustomServerHeaderModule : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        }

        public void Dispose()
        { }

        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            HttpContext.Current.Response.Headers.Remove("Server");
        }
    } 
}

我已经在我的网络配置中注册了它:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="CustomServerHeader" type="CustomServerHeaderModule" />
    </modules>
    ....

然而,它似乎永远不会运行。

我怀疑这是一个命名空间问题,但是我已经尝试了type=部分中我可以想到的每个命名空间组合,并且它从未达到我放入的断点。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

你是对的,这个类型中缺少你的命名空间。

以下对我有用:

   <modules runAllManagedModulesForAllRequests="true">
      <add name="CustomServerHeader" type="KittenFarm.ServerModules.CustomServerHeaderModule" />
   </modules>

答案 1 :(得分:1)

问题是该解决方案设置为使用Visual Studio开发服务器,该服务器不接收http模块。我改变它以使用我的本地IIS后,它工作。

答案 2 :(得分:0)

您可以将函数设置为在调用Application_Start方法之前运行。在global.asax中添加以下代码

[组件:PreApplicationStartMethod(typeof运算(CS.MVCHttpModule.MvcApplication), “注册”)]

请参阅http://dotnetlionet.blogspot.in/2015_06_01_archive.html