如何在 .net core 中为自动休息生成的构造函数注入委派处理程序数组



所以,我正在尝试使用autorest创建一个rest客户端。生成的代码在构造函数params DelegatingHandler[] handlers的参数中有一个委派处理程序数组。

我以前从未使用过委派处理程序,也不知道如何注入它们。我该怎么做?

我们使用 .net core 1.1 并使用 Startup.cs 中的 ConfigureServices 方法注入依赖项。

真的很老的问题,但我碰巧知道答案。

  1. 像这样创建你的 HttpClient:
this.httpHandler = CreatePipeline(handlers);
this.httpClient = new HttpClient(httpHandler);
  1. CreatePipeline 如下所示:
private static HttpMessageHandler CreatePipeline(IEnumerable<HttpMessageHandler> handlers)
{
HttpMessageHandler pipeline = handlers.LastOrDefault() ?? DefaultHandlerFactory();
if (pipeline is DelegatingHandler dHandler && dHandler.InnerHandler == null)
{
dHandler.InnerHandler = DefaultHandlerFactory();
pipeline = dHandler;
}
// Wire handlers up in reverse order
IEnumerable<HttpMessageHandler> reversedHandlers = handlers.Reverse().Skip(1);
foreach (HttpMessageHandler handler in reversedHandlers)
{
dHandler = handler as DelegatingHandler;
if (dHandler == null)
{
throw new ArgumentException($"bad handler", nameof(handlers));
}
dHandler.InnerHandler = pipeline;
pipeline = dHandler;
}
return pipeline;
}

然后,您只需创建一个 HttpClientHandler(由 DefaultHandlerFactory 处理(,您可以轻松更新它。

最新更新