簡體   English   中英

無法使用 dotnet 核心和 autofac 將 ServiceCollection 類型的對象轉換為類型“Autofac.ContainerBuilder”

[英]Unable to cast object of type ServiceCollection to type 'Autofac.ContainerBuilder' using dotnet core and autofac

我試圖在我的dotnet core 3.1項目中使用autofac ,但是在startup.cs文件中寫入ConfigureContainer后我無法運行項目。

    public void ConfigureContainer(ContainerBuilder builder)
    {

        var databaseConnectionString = Configuration.GetConnectionString("Database");

        builder.RegisterModule(new MediatorModule());
        builder.RegisterModule(new ApplicationModule(databaseConnectionString));
    }

我得到的錯誤是:

System.InvalidCastException:無法轉換類型的對象
“Microsoft.Extensions.DependencyInjection.ServiceCollection”輸入“Autofac.ContainerBuilder”。 在 Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1.ConfigureContainer(HostBuilderContext hostContext, Object containerBuilder) 在 Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider() 在 Microsoft.Extensions.Hosting.HostBuilder.Build() 在 Program.Main( String[] args) 在 C:\\src\\Program.cs:line 39

當你配置你的主機時,你應該調用UseServiceProviderFactory(new AutofacServiceProviderFactory())

public static void Main(string[] args)
{
    // ASP.NET Core 3.0+:
    // The UseServiceProviderFactory call attaches the
    // Autofac provider to the generic hosting mechanism.
    var host = Host.CreateDefaultBuilder(args)
                   .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                   .ConfigureWebHostDefaults(webHostBuilder => {
                       webHostBuilder
                        .UseContentRoot(Directory.GetCurrentDirectory())
                        .UseIISIntegration()
                        .UseStartup<Startup>();
                   })
                   .Build();

    host.Run();
}

如果沒有這個,.net 核心將創建一個ServiceCollection而不是一個ContainerBuilder並且會拋出一個InvalidCastException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM