我有一个需要使用 2 个委托处理程序的 Web API 调用,但我似乎从未进入第二个处理程序。该路线已向处理程序注册。我不允许在全局配置中设置处理程序。
DelegatingHandler[] handlers = new DelegatingHandler[2];
handlers[0] = new HandlerA();
handlers[1] = new HandlerB();
RouteTable.Routes.MapHttpRoute(
name: "TestAPI",
routeTemplate: "api/{controller}",
handler: HttpClientFactory.CreatePipeline(
innerHandler: new HttpClientHandler(),
handlers: handlers
),
defaults: new { controller = "test"},
constraints: null
);
HandlerA 触发断点,没有进一步的问题。
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
if (request == null)
throw new ArgumentNullException("request");
//Breakpoint is hit
return base.SendAsync(request, cancellationToken);
}
我预计会到达 HandlerB 但它永远不会到达,它直接进入 API 控制器。处理程序 A 不对请求做任何事情。