我试图在ASP.NET WebAPI项目中记录整个传入请求和传出响应。虽然我同意DelegatingHandler,但我的雇主坚持使用HttpModule。你如何向她解释,为什么我们应该使用DelegatingHandler而不是HttpModule?还是我错了?
发布于 2016-09-07 19:21:29
我会使用DelegatingHandler。DelegatingHandler是Web管道的一部分,可以在任何主机下运行。HttpModule不是Web的一部分,需要IIS。
虽然与您的问题没有直接关系,但我将引用下面的MSDN文章,其中突出了这两者的区别:
HTTP 这是运行在上的Web的一个选项。HTTP模块允许早期执行安全代码,作为IIS管道的一部分。从HTTP模块建立的主体对所有组件都可用,包括稍后在管道中运行的IIS组件。例如,当HTTP模块响应AuthenticateRequest事件建立主体时,主体的用户名将正确地记录在IIS日志中的cs-username字段中。HTTP模块最大的缺点是缺乏粒度。HTTP模块为进入应用程序的所有请求运行。对于具有不同功能(如HTML标记生成、Web等)的Web应用程序,以一种方式强制身份验证的HTTP模块通常不是一种灵活的方法。在这种情况下,使用HTTP模块的另一个缺点是依赖于主机-IIS。 Message Handler是ASP.NET Web提供的扩展性选项,为安全使用消息处理程序的最大好处是它是ASP.NET Web框架的概念,因此不依赖于底层主机或服务器。此外,消息处理程序只对Web请求运行。使用消息处理程序的缺点是缺少更精细的控制。可以将消息处理程序配置为作为所有请求或特定路由的全局处理程序运行。对于给定的路由,可以有多个控制器。所有这些控制器及其包含的操作方法都必须共享为该路由配置的消息处理程序强制执行的相同身份验证。换句话说,消息处理程序实现的身份验证的最低粒度位于路由级别。
https://stackoverflow.com/questions/39373219
复制相似问题