How is the order of execution for HttpModules dete

2019-02-01 11:07发布

问题:

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?

回答1:

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>


回答2:

I don't think you can guarantee or specify an order that httpmodules will run in. If SecondModule is dependent on FirstModule it may be better to just combine their functionality into 1 httpmodule.