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

asp.net – 我可以确定HttpModules是按照HttpApplication.Module

发布时间:2020-12-15 19:40:57 所属栏目:asp.Net 来源:网络整理
导读:我想写一个IHttpModule,必须在FormsAuthenticationModule之后严格执行,否则将无用. 有HttpContext.Current.ApplicationInstance.Modules属性返回IHttpModules的集合.我可以检查我的模块是否在此集合中的FormsAuthenticationModule之后. 那会不够用?该集合是
我想写一个IHttpModule,必须在FormsAuthenticationModule之后严格执行,否则将无用.

有HttpContext.Current.ApplicationInstance.Modules属性返回IHttpModules的集合.我可以检查我的模块是否在此集合中的FormsAuthenticationModule之后.

那会不够用?该集合是否按照执行顺序排列IHttpModules?

解决方法

回想一下,模块可以订阅不同的流水线事件.在任何给定的管道事件中,模块应按照模块集合中指定的顺序运行.

作为一个实际的例子,想像一个模块集合,其中注册了这三个模块:

>模块A,它订阅EndRequest
>模块B,它订阅了BeginRequest和EndRequest
>模块C,它订阅AuthenticateRequest

执行顺序为:

>模块B,BeginRequest
> Module C,AuthenticateRequest
>模块A,EndRequest
模块B,EndRequest

由于FormsAuthenticationModule订阅AuthenticateRequest事件,因此考虑使您自己的模块订阅PostAuthenticateRequest事件.这样,您可以保证,如果FormsAuthenticationModule逻辑运行,它将运行在您的逻辑之前,无论他们在Modules集合中注册的顺序如何.

(编辑:李大同)

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

    推荐文章
      热点阅读