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