How is the order of execution for HttpModules determined?
Asked Answered
U

2

37

Suppose that both FirstModule and SecondModule handle the Application_BeginRequest event. Will it execute in the order defined in the web.config?

<httpModules>
  <add type="MyApp.FirstModule, MyApp" name="FirstModule"/>
  <add type="MyApp.SecondModule, MyApp" name="SecondModule"/>
  <add type="OtherApp.OtherModule, OtherApp" name="OtherModule"/>
</httpModules>

Are there other ways that the order can be specified?

Undermanned answered 11/3, 2010 at 18:5 Comment(0)
Y
39

According to this forum post, HttpModules are executed in the order in which they were registered. This makes sense to me, because otherwise the <clear> and <remove> directives would also not work as expected, e.g. when used like this:

<httpModules> 
   <clear/>
   <add... />
</httpModules>
Yand answered 11/3, 2010 at 18:32 Comment(6)
Someone in the forum post DOES say that. However there were several people who also said that you shouldn't depend on it.Undermanned
Shouldn't depend on it yes, not because it doesn't work but because of design considerations and promoting loose coupling between the modules. But there are no cases where the ordering of modules will be different to what is in the config file. Hope this helps.Sign
It appears you can order them, however the ordering appears to be locked, and you must unlock the entries to affect the actual ordering.Algonquian
@Algonquian I would be interested to read more about this. Do you have a url or some sort of resource where you found out about the locking/unlocking.Undermanned
check this as well before investing time in this answer. https://mcmap.net/q/426743/-can-i-be-sure-that-httpmodules-are-executed-in-the-order-in-which-they-are-listed-in-the-httpapplication-modules-collectionHakan
Can MS be so lame to not include an explicit ordering mechanism?Bascinet
B
5

According to the Internet Information Services (IIS) 7.0 Resource Kit book extract from Microsoft Press,

To resolve such relative ordering dependencies, the administrator can control the relative ordering of modules by changing the order in which they are listed in the modules section.

This works because the server uses the order in the modules configuration section to order module execution within each request processing stage. By placing module A before module B in the list, you can allow module A to execute before module B.

Biome answered 8/10, 2019 at 13:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.