我有一个.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)。
那么,有没有什么方法可以在.NET 4.8项目中使用IHttpClientFactory
,而不必依赖DI扩展库呢?
谢谢。
1条答案
按热度按时间ca1c2owp1#
那么,有没有什么方法可以在. NET 4.8项目中使用IHttpClientFactory而不必依赖DI扩展库呢?
不,这是不可能的。HttpClientFactory与MS DI基础设施紧密集成。这意味着,为了使用它,您将陷入痛苦的境地,以下包将被拉入您的. NET 4.8应用程序中:
Here is a related answer,它展示了如何在DI的上下文之外使用HttpClientFactory。您会发现在您的案例中集成它将类似于该方法。
我认为对DI基础设施的硬依赖是包含HttpClientFactory的包中的一个设计缺陷。