如何在不使用 .NET Core/Standard 中的 DI 的情况下将 IHttpClientFactory 与 .NET 4.8 一起使用

问题描述 投票:0回答:1

我有一个 .NET 4.8 Windows 窗体应用程序,它使用 Autofac 进行 DI。目前,我们正在使用一个注册为单例的

HttpClient
实例:

 builder.Register(c => {
         var handler = c.Resolve<HttpClientHandler>();
         var bearerHandler = new BearerAuthenticationDelegatingHandler( c.Resolve<AuthenticationManager>(), handler);
         var client = new HttpClient(bearerHandler) {                                                                                            
             BaseAddress = new Uri(baseUrl)
         };
         client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
         return client;
})
.AsSelf()
.SingleInstance();

AuthenticationManager
负责管理注入到 Web 请求中的访问令牌 (
BearerAuthenticationDelegatingHandler
)。

即使我没有受到 DNS 问题的影响,我也想遵循 MS

HttpClient
的建议,并且我想将
IHttpClientFactory
添加到我的应用程序中。但是,如果不向通常在 .NET 7 项目中使用的依赖项注入库添加依赖项,似乎根本没有办法做到这一点(例如,这是一个 example found of this approach)。

那么,有没有办法在.NET 4.8项目中使用

IHttpClientFactory
而不依赖DI扩展库呢?

谢谢。

winforms dependency-injection httpclient autofac ihttpclientfactory
1个回答
0
投票

那么,有没有办法在.NET 4.8项目中使用IHttpClientFactory而不依赖DI扩展库呢?

不,这是不可能的。 HttpClientFactory 与 MS DI 基础结构紧密集成。这意味着,为了使用它,您的应用程序将至少包含

Microsoft.Extensions.Http
Microsoft.Extensions.DependencyInjection.Abstractions
库。

这里有一个相关的答案,展示了如何在 DI 上下文之外使用 HttpClientFactory。您会发现将它集成到您的案例中与该方法类似。

© www.soinside.com 2019 - 2024. All rights reserved.