繁体   English   中英

当 RegisterEventBus “没有注册 Autofac.ILifetimeScope 类型的服务时。”

[英]When RegisterEventBus " No service for type Autofac.ILifetimeScope' has been registered.'

我正在按照下面的代码配置服务总线。 当我执行这段代码时,它指责我不知道如何配置它的错误。 请。 我从哪里来的桥或如何安排它

 private void RegisterEventBus(IServiceCollection services) { var subscriptionClientName = Configuration["SubscriptionClientName"]; if (Configuration.GetValue<bool>("AzureServiceBusEnabled")) { services.AddSingleton<IEventBus, EventBusServiceBus>(sp => { var serviceBusPersisterConnection = sp.GetRequiredService<IServiceBusPersisterConnection>(); var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>(); var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>(); var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>(); return new EventBusServiceBus(serviceBusPersisterConnection, logger, eventBusSubcriptionsManager, subscriptionClientName, iLifetimeScope); }); } }

这个文档是你想要查看的,特别是 .net core v3+:

https://autofaccn.readthedocs.io/en/latest/integration/aspnetcore.html#quick-start-with-configurecontainer

示例程序.cs:

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory())
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
                webBuilder.UseIIS();
            });
}

我在玩的时候也遇到过同样的问题。 经过我的分析,我发现核心问题是用Autofac的依赖注入容器替换了默认的依赖注入容器。

确保在 ConfigureServices 方法中返回 AutofacServiceProvider。

我正在学习事件总线跟踪商店,我遇到了同样的问题,最后,我找到了网站 [Mickaël Derriey 的博客] https://mderriey.com/2018/08/02/autofac-integration的解决方案-in-asp-net-core-generic-hosts/

public static async Task Main(string[] args)
{
    await new HostBuilder()
        .UseServiceProviderFactory(new AutofacServiceProviderFactory())
        .ConfigureContainer<ContainerBuilder>(builder =>
        {
            // registering services in the Autofac ContainerBuilder
        })
        .UseConsoleLifetime()
        .Build()
        .RunAsync();
}

.UseServiceProviderFactory(new AutofacServiceProviderFactory()) 只是帮我编译代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM