我正在autofac
项目中尝试使用dotnet core 3.1
,但是在ConfigureContainer
文件中写入startup.cs
后,我无法运行项目。
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(HostBuilderContexthostContext,对象containerBuilder)位于Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()在Microsoft.Extensions.Hosting.HostBuilder.Build()在C:\ src \ Program.cs:line 39中的Program.Main(String [] args)
P.S:我了解我要说明的问题是很大的,但是我不知道如何更好地解释它。
配置主机时,您应致电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
。