当RegisterEventBus“未注册类型为Autofac.ILifetimeScope的服务时。'

时间:2019-05-14 00:56:26

标签: c# asp.net azureservicebus event-bus

我正在按照以下代码配置服务总线。当我执行此代码时,它会指出此错误,我不知道如何配置它。请。我是它的来龙去脉或如何布置

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);
                });
            }
        }

3 个答案:

答案 0 :(得分:1)

我正在学习跟着商店购物的活动巴士,遇到了同样的问题,最后,我找到了网站的解决方案[MickaëlDerriey的博客] 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())只是帮助我编译了代码。

答案 1 :(得分:1)

此文档是您要签出的文档,专门针对.net core v3 +:

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

示例Program.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();
            });
}

答案 2 :(得分:0)

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

确保您在ConfigureServices方法中返回AutofacServiceProvider。