gpt4 book ai didi

asp.net - IIS7 HttpModule 和 ISAPI Filter 执行顺序

转载 作者:行者123 更新时间:2023-12-04 15:37:04 25 4
gpt4 key购买 nike

我有一个使用 ISAPI Rewrite 的网站以及一个自定义的 HttpModule ,它们都进行 Url 重定向和重写。

在 IIS 6 中,一切正常:ISAPI 重写过滤器将首先运行,然后是 HttpModule。在 IIS 7(集成模式)中,顺序现在是相反的,这会带来问题。

具体来说,我的问题是 HttpModule 有一个条件,它将使用 context.RewritePath 发出 Url 重写。 .如果没有提供文档,它将显式添加“index.aspx”到路径,因此向 /test/ 发出请求被重写为 /test/index.aspx .

在路径被重写后的某个时间点,ISAPI 重写过滤器执行。我们有一个与模块相反的规则:对 /test/index.aspx 的请求得到 301 重定向到 /test/ .因此,我们有一个无限循环。

IIS 7 中 HttpModules 和 ISAPI Filters 的执行顺序是如何确定的? 可以更改顺序吗?我找到了this question ,但它并没有真正帮助。我不是 IIS 7 的大师,但我确实在一定程度上理解模块和 ISAPI 过滤器“一起”运行。不幸的是,他们的管理方式仍然不同,我不知道如何强制一个人先于另一个人跑。帮助!

注意:假设我无法更改现有代码。它在 IIS 6 中工作。我只想知道是否有办法让它在 IIS 7 集成模式下工作。

最佳答案

我也遇到过类似的问题,我认为 ISAPI 重写首先执行,但显然这不是 IIS7 的工作方式
我发现这个线程说

In integrated mode the events for native module, isapi and .net are called mixed together

e.g. if it's a BeginRequest then the native module is the first to come, then isapi, then .net code. After that everything will repeat for AuthenticateRequest...

Some time ago it used to be like this: isapi has processed all events, and only after that .net was invoked. This is probably what you've assumed.


http://www.helicontech.com/forum/18447-ISAPI_RW3_Lite_on_IIS_7x_Integrated_mode.html
希望它有所帮助

关于asp.net - IIS7 HttpModule 和 ISAPI Filter 执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5330395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com