首页 文章

是否可以将 HttpModule 添加到 ASP Classic 应用程序?

提问于
浏览
1

我需要在提供页面之前进行一些验证。如果验证正常,则请求应遵循其正常流程;如果没有,它必须重定向到另一个页面,在该页面中,用户将看到类似协议的内容,接受它,之后页面应该正常加载。

所以,我有一个应用程序在 ASP Classic 上有一些页面,在 ASP.NET 中有一些页面。我正在尝试做的是添加一个 HttpModule 来处理所有请求做一些逻辑,根据结果重定向到另一个页面。

因此,在 IIS 中,ASP 应用程序位于其他应用程序的顶部,而在该应用程序内部,我有其他应用程序是.NET。

我创建了一个 HttpModule 来测试它,注册了 DLL 并在 ASP 应用程序级别的 web.config 文件上添加了相应的配置。

这是我添加到 web.config 文件中的块

<system.web>
    <customErrors mode="Off"></customErrors>
    <httpModules>
        <add name="TestHttpModule" type="TestHttpModule.TestHttpModule, TestHttpModule,Version=1.0.0.0, Culture=neutral, PublicKeyToken=d76c51db0a9391cf"/>
    </httpModules>
</system.web>

该模块仅在请求 ASPX 页面时触发,但在请求 ASP 页面时不会触发。

那么可以为 ASP 页面使用自定义 HttpModule 还是不可能?

如果没有,你知道其他任何一种做法吗?

应用程序在经典模式下使用其 App Pool。

应用程序池配置

提前致谢!

1 回答

  • 1

    应用程序在经典模式下使用其 App Pool。

    在经典模式下,ASP.NET 管道仅针对 ASP.NET 请求激活。因此,如果路径以“.asp”结束,模块将不会触发。但是在集成管道模式中,它会针对每个请求触发,包括图像,CSS 文件和是的经典 ASP 文件。

    因此,您需要切换实现以使用集成管道模式,并将模块添加到名为system.webserver而不是system.web的配置部分。您可能需要修改模块,以便忽略对静态资源(e.g. 图像和 CSS)的请求,并且只查看以.aspx 和.asp(可能是.ashx 或您使用的任何其他扩展名)结尾的请求。

相关问题