在某个位置禁用HttpModule

时间:2009-05-26 15:46:32

标签: c# .net asp.net ihttpmodule

我知道这已经被问到here但是答案(使用处理程序代替)并没有解决问题,因为我使用的是没有实现IHttpHandler的第三方组件。

那么,有没有办法在某个请求上加载/卸载HttpModule?

编辑:我忘了提到我们正在使用.NET 2.0。抱歉,我很抱歉。

3 个答案:

答案 0 :(得分:1)

我没有对此进行测试,但comment in this article似乎表明可以使用<location&gt;注册仅针对特定位置的模块。 web.config中的元素,例如:

  <location path="some/path">
    <system.web>
      <httpModules>
        <remove name="name"/>
        <add name="name" type="type"/>
      </httpModules>
    </system.web>
  </location>

答案 1 :(得分:0)

我认为问题在于HttpModule的继承问题,您是否需要使用第三方控件继承web.config?

尝试添加此属性,其中路径将是存储组件的位置;

<location path="/ThirdPartyComponents" inheritInChildApplications="false">
    ...
</location>

答案 2 :(得分:0)

你可以做到这一点的一种方法是使用包装模块。在您的应用程序中注册一个httpModule,然后在此模块中创建与运行其他模块相对应的规则。您可以访问请求对象,这样您就可以检测到所获得的请求类型,并将逻辑路由到相关(自定义)模块。