HttpModule 的执行顺序是如何确定的?

发布于 2024-08-25 12:49:26 字数 430 浏览 4 评论 0原文

假设 FirstModuleSecondModule 都处理 Application_BeginRequest 事件。它会按照 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>

还有其他方法可以指定顺序吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别理我 2024-09-01 12:49:26

根据此论坛帖子,HttpModules按照它们注册的顺序执行。这对我来说很有意义,因为否则 指令也不会按预期工作,例如,当像这样使用时:

<httpModules> 
   <clear/>
   <add... />
</httpModules>

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>
忘你却要生生世世 2024-09-01 12:49:26

根据 Internet 信息服务 (IIS) 7.0 资源Kit 书籍摘录自 Microsoft Press,

要解决此类相对排序依赖性,管理员可以通过更改模块在模块部分中列出的顺序来控制模块的相对排序。

这是有效的,因为服务器使用模块配置部分中的顺序来排序每个请求处理阶段内的模块执行。通过将模块 A 在列表中放在模块 B 之前,您可以允许模块 A 在模块 B 之前执行。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文