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集合中注册的顺序如何.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...