【发布时间】:2011-07-16 20:50:22
【问题描述】:
我有一个使用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 集成模式下工作。
【问题讨论】:
标签: asp.net iis-7 httpmodule isapi