asp.net – 我可以确定HttpModules是按照HttpApplication.Modules集合中列出的顺序执行的吗?

前端之家收集整理的这篇文章主要介绍了asp.net – 我可以确定HttpModules是按照HttpApplication.Modules集合中列出的顺序执行的吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想写一个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集合中注册的顺序如何.

猜你在找的asp.Net相关文章