WebApi-控制器路由
2021-03-15 00:34
标签:问题 路由 pipe exe 直接 class cto end image 带着问题去思考,大家好! WebAPI核心任务是什么?它的核心机制又是什么? 核心任务是处理HTTP请求并提供适当的响应。 1 消息流概览 HTTP消息流的框架组件大致分2种 第一层组件只依靠来自底层“消息处理程序”管道的核心HTTP消息上下文。 这张图是消息处理管道和控制器管道。 依赖高层编程模型的组件不同,这些组件可以访问并使用编程框架抽象层。 2 消息处理管道 HttpServer是消息处理管道的入口,HttpServer调用HttpClientFactory的CreatePipeline方法。使用全局和路由配置数据中提供的处理程序,初始化管道。 HttpServer自己派生的DelegatingHandler类,HttpServer成为了消息处理管道中第一个处理程序,其后是认识多个定制的DelegatingHandler对象组成,这些定制对象注册在HttpConfiguration中,接着是HttpRoutingDispatcher,最后要么是HttClientFactory.CreatePipline构造的另一个消息处理管道,要么就是默认的HttpControllerDispatcher 1:HttpServer将HttpClientFactory.CreatePipeline返回的值赋给自己的InnerHandler属性,成为管道的第一个节点。 2:调用自己的基类SendAsync方法。将控制权移交给下一个处理程序。 管道所有的消息处理都用这种方式移交 3:基类DelegatingHanlder直接调用对象的InnerHandler的SendAsync方法。对象的内部处理程序在自己的SendAsync方法中处理消息。最有一个就是将请求分发到控制器实例的处理程序 这是基于任务的异步管道。 分发程序 HttpServer使用HttpRoutingDispatcher的一个实例作为消息处理程序管道的最后一个节点。它是负责消息处理管道的最后一个节点,或者默认HttpControllerDispatcher。 HttpControllerDispatcher派生自HttpMessageHandler。HttpMessageHandler无法直接调用。HttpRoutingDispatcher将分发程序实例封装在一个HttpMessageHandler对象中执行。 HttpControllerDispatcher执行三个任务 ASP.Net Web Api提供一个默认的实现DefaultIHttpControllerSelector, 3 控制器管道 ApiController处理模型。 ApiController.ExecuteAsync方法内部执行。 WebApi-控制器路由 标签:问题 路由 pipe exe 直接 class cto end image 原文地址:https://www.cnblogs.com/ccaa/p/12444230.html
return base.SendAsync(request,cancellationToken)
var invoker=(routeData.Route==null||routeData.Route.Handler==null)?_defaultInvoker:new HttpMessageInvoker(routeData.Route.Handler,disposeHandler:false);
return invoker.SendAsync(request,cancellationToken);
上一篇:win7共享打印机设置