gpt4 book ai didi

asp.net - 消息处理程序和 Http 模块?

转载 作者:行者123 更新时间:2023-12-04 18:40:53 24 4
gpt4 key购买 nike

In ASP.NET Web API, HTTP requests and responses are processed in a pipeline on the server.



如果我想在管道的早期阶段添加一些逻辑或全局行为,我应该在消息处理程序中进行。 (例如:身份验证)

但是 Http 模块管道呢?它在整个故事中的位置?

查看 web api 生命周期的编号阶段:

http://i.stack.imgur.com/jkQe8.jpg

enter image description here

但是查看 Http 模块一般事件(包含更多但...) enter image description here

问题:

— 这两个系统如何结合以及在哪里结合?我的意思是如果有 1 张包含 web api 和 http 模块的图片,数字会是多少? (我在图像中添加了数字以便于引用)

— 我总是听说如果我想在管道中更早做一些事情,我应该使用消息处理程序,但是 HttpModule 的 BeginRequest 呢?例如 ?我知道在这个阶段有些对象是空的,但是 httpmodule 的后期阶段确实会膨胀 HttpContetxt 的对象 - 然而,webapi 的人说:使用 MessageHandlers ......(它与 selfhoster 环境的事实有关)?

最佳答案

要将下图合并到上图中,假设上图中的 IHttpHandler 框对应于下图中的 ASPX,因此您将下图放在上图中的左下角。因此,8 和 9 是 IIS ASP.NET 管道的一部分。 IIS 管道运行模块等,并在处理程序处理请求时终止。对于 Web API,该处理程序恰好是 HttpControllerHandler这就是 Web API 管道开始的地方。如果你看HttpControllerHandler ,请求和响应是 ASP.NET 特定的,其左侧和右侧变为 HttpRequestMesssage这是特定于 Web API 的。

对于您的第二个问题,您最早可以在 Web API 管道中执行的操作将是消息处理程序。 HttpModule 会更早,但它不是 Web API 的一部分,而是托管。权衡是,如果您有一个 HttpModule,则只能在 IIS 中使用它,而消息处理程序可以在任何主机上运行,​​因为它是特定于 Web API 和主机的。我在最近的 SO 回复中一直提到我的 MSDN 文章,但碰巧这篇文章与所提出的问题相关。所以,我别无他法,只能再次链接它。给你go .我在那篇文章中比较了不同的选项。

关于asp.net - 消息处理程序和 Http 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com