In general, the following events are triggered in sequence.
Beginrequest
Authenticaterequest
Authorizerequest
Resolverequestcache
Acquirerequeststate
Prerequesthandlerexecute
Postrequesthandlerexecute
Releaserequeststate
Updaterequestcache
Endrequest
In addition, there are three uncertain orders:
Presendrequestheaders
Presendrequestcontent
Error
So what happens after we register multiple modules?
For example:
If you have configured two httpmodules in Web. config: httpmodulea and httpmoduleb
The event execution sequence is as follows:
Httpmodulea-> beginrequest
Httpmoduleb-> beginrequest
Httpmodulea-> authenticaterequest
Httpmoduleb-> authenticaterequest
Httpmodulea-> authorizerequest
Httpmoduleb-> authorizerequest
... And so on
Of course, the default modules in the system are always executed before the custom modules.
Framework default module (c: \ windows \ microsoft.net \ framework \ v2.0.50727 \ config \ WEB. config)
<Httpmodules> <Add name = "Outputcache" Type = "System. Web. caching. outputcachemodule" /> <Add name = "Session" Type = "System. Web. sessionstate. sessionstatemodule" /> <Add name = "Windowsauthentication" Type = "System. Web. Security. windowsauthenticationmodule" /> <Add name = "Formsauthentication" Type = "System. Web. Security. formsauthenticationmodule" /> <Add name = "Passportauthentication" Type ="System. Web. Security. passportauthenticationmodule" /> <Add name = "Rolemanager" Type = "System. Web. Security. rolemanagermodule" /> <Add name = "Urlauthorization" Type = "System. Web. Security. urlauthorizationmodule" /> <Add name = "Fileauthorization" Type = "System. Web. Security. fileauthorizationmodule" /> <Add name = "Anonymousidentification" Type = "System. Web. Security. anonymousidentificationmodule" /> <Add name = "Profile" Type ="System. Web. profile. profilemodule" /> <Add name = "Errorhandlermodule" Type = "System. Web. Mobile. errorhandlermodule, system. Web. Mobile, version = 2.0.0.0, culture = neutral, publickeytoken = b03f5f7f11d50a3a" /> <Add name = "Servicemodel" Type = "System. servicemodel. Activation. httpmodule, system. servicemodel, version = 3.0.0.0, culture = neutral, publickeytoken = b77a5c561934e089" /> </Httpmodules>