我有一个 .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扩展库呢?
谢谢。
那么,有没有办法在.NET 4.8项目中使用IHttpClientFactory而不依赖DI扩展库呢?
不,这是不可能的。 HttpClientFactory 与 MS DI 基础结构紧密集成。这意味着,为了使用它,您的应用程序将至少包含
Microsoft.Extensions.Http
和 Microsoft.Extensions.DependencyInjection.Abstractions
库。
这里有一个相关的答案,展示了如何在 DI 上下文之外使用 HttpClientFactory。您会发现将它集成到您的案例中与该方法类似。