首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用IHttpClientFactory与Autofac (使用网络框架)?

如何使用IHttpClientFactory与Autofac (使用网络框架)?
EN

Stack Overflow用户
提问于 2022-09-05 11:35:40
回答 1查看 488关注 0票数 0

我正在努力让DI在autofac中为IHttpClientFactory工作。

通常,我使用.net核心依赖注入系统,并执行以下操作:

代码语言:javascript
复制
services.AddHttpClient(HttpClientConstants.HttpClientNameA, client =>
            {
                client.BaseAddress = new Uri(MyConfig.MyBaseUrl);
            });

但是,现在我正在使用一个使用Autofac的网络框架项目。我在互联网上看过,根据我发现的教程,我尝试过这样做:

代码语言:javascript
复制
builder.Register(ctx => new HttpClient() { BaseAddress = new Uri(MyConfig.MyBaseUrl) })
                .Named<HttpClient>(HttpClientConstants.HttpClientNameA)
                .SingleInstance();

            builder.Register(c => c.Resolve<IHttpClientFactory>().CreateClient())
            .As<HttpClient>();
builder.RegisterType<MyService>().As<IMyService>();

但是,当我试图像这样使用它时,它会崩溃,并且我会得到一个Autofac错误,说明它无法找到构造函数来构建我的服务。

代码语言:javascript
复制
public class MyService: IMyService
    {
        
        private readonly IHttpClientFactory httpClientFactory;

        public MyService(IHttpClientFactory httpClientFactory)
        {
            this.httpClientFactory = httpClientFactory; 
        }
    }

知道我怎么能让它起作用吗?这甚至是可能的,或者我根本不应该使用IHttpClientFactory并使用另一种方法?(就像直接注入httpclient构造函数一样)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 15:43:09

我已经成功地以这种方式在.netStandard 2.0库中注册了工厂:

代码语言:javascript
复制
containerBuilder.Register<IHttpClientFactory>(_ =>
            {
                var services = new ServiceCollection();
                services.AddHttpClient();
                var provider = services.BuildServiceProvider();
                return provider.GetRequiredService<IHttpClientFactory>();
            });

ServiceCollection位于名称空间'Microsoft.Extensions.DependencyInjection‘中,应该在使用这个nuget包的.net框架中可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73608744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档