要将下图合并到最上面的图中,想象一下上图中的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文章,但后来碰巧这篇文章与被问到的问题有关.所以,我没有其他去,但再次链接它.在这里,您去.我对该文章中的不同选项进行了比较.