【问题标题】:HttpModule vs DelegatingHandler - advantages/disadvantages?HttpModule vs DelegatingHandler - 优点/缺点?
【发布时间】:2016-09-07 14:54:52
【问题描述】:

我正在尝试在 ASP.NET WebAPI 项目中记录整个传入请求和传出响应。虽然我同意DelegatingHandler,但我的雇主坚持使用HttpModule。你会如何向她解释,为什么我们应该使用DelegatingHandler 而不是HttpModule?还是我错了?

【问题讨论】:

    标签: c# asp.net-web-api asp.net-web-api2 httpmodule delegatinghandler


    【解决方案1】:

    我会使用DelegatingHandlerDelegatingHandler 是 Web API 管道的一部分,可以在任何主机下运行。 HttpModule 不是 Web Api 的一部分,需要 IIS。

    虽然与您的问题没有直接关系,但我将引用以下MSDN 文章,重点介绍两者,包括差异:

    HTTP 模块 这是在 IIS 上运行的 Web API 的一个选项。 HTTP 模块允许安全代码作为 IIS 的一部分尽早执行 管道。从 HTTP 模块建立的主体可用 到所有组件,包括稍后运行的 IIS 组件 管道。例如,当主体由 HTTP 建立时 模块响应 AuthenticateRequest 事件,用户名 主体在 IIS 的 cs-username 字段中正确记录 日志。 HTTP 模块的最大缺点是缺少 粒度。 HTTP 模块针对所有进入 应用。对于具有不同功能的 Web 应用程序,例如 HTML 标记生成、Web API 等,具有 HTTP 模块 以一种方式执行身份验证通常不够灵活 方法。使用 HTTP 模块的另一个缺点是 对主机的依赖——在本例中为 IIS。

    Message Handler 由 ASP.NET Web API 提供的可扩展性选项, 使用消息处理程序确保安全的最大好处是它是 ASP.NET Web API 框架的概念,因此不依赖于 底层主机或服务器。此外,消息处理程序仅针对 Web API 请求。使用消息处理程序的缺点是缺乏 的精细控制。消息处理程序可以配置为作为 所有请求或特定路由的全局处理程序。对于给定的 路由,你可以有多个控制器。所有这些控制器和 它们包含的操作方法必须共享相同的身份验证 由为该路由配置的消息处理程序强制执行。其他 换句话说,由 a 实现的身份验证的最低粒度 消息处理程序处于路由级别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 2013-08-03
      • 2015-12-09
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多