[英]No service for type 'IServiceProviderFactory[Autofac.ContainerBuilder]' has been registered
[英]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.