首页 > 解决方案 > ASP.NET(经典):自动注册处理所有请求(包括非托管)的 Httpmodule

问题描述

我创建了一个自定义的 HttpModule,并试图确保它自动注册(这样用户就不必求助于 \<<modules> 元素)。为了做到这一点,我首先添加PreApplicationStartMethod到包含模块的程序集中:

[assembly: PreApplicationStartMethod(typeof(AutoRegisterHttpModule), nameof(AutoRegisterHttpModule.Start))]

然后,我使用以下代码注册了模块:

public static class AutoRegisterHttpModule {
    public static void Start() {
        HttpApplication.RegisterModule(typeof(GrmMagickModule));
    }
}

不幸的是,我注意到这不会产生与使用 <add> 元素相同的结果:

<modules>
 <add type="Grm.Magick.Resizing.GrmMagickModule, Grm.Magick.Resizing" name="GrmMagick"/>
</modules>

当我这样做时,我的模块将处理所有请求。但是,当我自动注册我的模块时不会发生这种情况。在这些情况下,我需要更改模块声明,使其看起来像这样:

<modules runAllManagedModulesForAllRequests="true"></modules>

有机会通过自动注册获得相同的结果吗?

谢谢。

标签: asp.nethttpmodule

解决方案


推荐阅读