簡體   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