加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 03:51:56 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用 ISAPI Rewrite的网站以及一个自定义的HttpModule,它们都进行了Url重定向和重写. 在IIS 6中,一切正常:首先运行ISAPI Rewrite过滤器,然后运行HttpModule.在IIS 7(集成模式)中,顺序现在是相反的,这会产生问题. 我的问题,特别是,HttpModule有一个
我有一个使用 ISAPI Rewrite的网站以及一个自定义的HttpModule,它们都进行了Url重定向和重写.

在IIS 6中,一切正常:首先运行ISAPI Rewrite过滤器,然后运行HttpModule.在IIS 7(集成模式)中,顺序现在是相反的,这会产生问题.

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

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

如何在IIS 7中确定HttpModules和ISAPI过滤器的执行顺序?订单可以更改吗?我找到了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

希望它有所帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读