Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解析在ConfigureService中注册的服务以及在.NET Core 3.0的Autofac ConfigureContainer方法中使用_C#_Autofac_.net Core 3.0 - Fatal编程技术网

C# 如何解析在ConfigureService中注册的服务以及在.NET Core 3.0的Autofac ConfigureContainer方法中使用

C# 如何解析在ConfigureService中注册的服务以及在.NET Core 3.0的Autofac ConfigureContainer方法中使用,c#,autofac,.net-core-3.0,C#,Autofac,.net Core 3.0,这里我的挑战是解决我在ConfigureServices方法中注册的IHttpContextAccessor服务,并使用它在ConfigureContainer方法上向Autofac注册实例。但是,随着.NETCore3.0中使用Autofac的新方法的出现,我发现这样做真的很有挑战性。我尝试的方法如下: public void ConfigureContainer(ContainerBuilder builder) { var conta

这里我的挑战是解决我在
ConfigureServices
方法中注册的
IHttpContextAccessor
服务,并使用它在
ConfigureContainer
方法上向Autofac注册实例。但是,随着.NETCore3.0中使用Autofac的新方法的出现,我发现这样做真的很有挑战性。我尝试的方法如下:

        public void ConfigureContainer(ContainerBuilder builder)
        {
            var container = builder.Build();

            var httpContextAccessor = container.Resolve<IHttpContextAccessor>();
            var executionContextAccessor = new ExecutionContextAccessor(httpContextAccessor);

            ServicesAutofacExtensions.RegisterServicesWithAutofac(executionContextAccessor, Configuration, _loggerForApi);
        }
public void配置容器(ContainerBuilder生成器)
{
var container=builder.Build();
var httpContextAccessor=container.Resolve();
var executionContextAccessor=新的executionContextAccessor(httpContextAccessor);
ServicesAuthoFaceExtensions.RegisterServicesWithAutofac(executionContextAccessor,Configuration,loggerForApi);
}
但当我运行时,它会抛出这个错误

访问Microsoft.Extensions.Hosting时出错 服务。在没有应用程序服务提供商的情况下继续。错误: 在ContainerBuilder上只能调用一次Build()或Update()

现在我在文档中知道了,它说ContainerBuilder不应该用工厂自动处理的方法构建。但是如何解析IHttpContextAccessor以在ConfigureContainer中使用它呢?
我已经搜索和研究了可能的解决方案,但没有找到。请提供帮助。

使用lambda表达式进行注册可能更好,例如,在表达式中这样,您将收到容器实例,我将能够解析所需的服务并将其作为参数传递。什么是
servicesautoFaceExtensions.RegisterServicesWithAutofac
正在做什么?为什么需要在此处解析
IHttpContextAccessor
?@Cyrildrand
ServicesAuthoFaceExtensions。RegisterServicesWithAutofac
是我将应用程序服务和类添加到DI容器的地方。其中有一个类
ExecutionContextAccessor
,它在构造函数中接受
IHttpContextAccessor
。这就是为什么我需要解析它,以便将
ExecutionContextAccessor
注册为实例。我不知道我是否讲清楚了enough@KaceyEzerioha我质疑目前的设计选择。目前的问题是不完整的,因此不清楚。如果你能和我们分享一个好的例子,那就太棒了,这样我们就可以更清楚地了解当前的问题以及你到底在做什么?@KaceyEzerioha依赖注入不是这样工作的。当您注册东西时,您可以注册所有组件,而无需创建任何组件。然后DI框架将创建依赖关系图。