Ben*_*min 17 c# autofac .net-core
我想用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));
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
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
Cyr*_*and 43
当你配置你的主机时,你应该调用 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();
}
Run Code Online (Sandbox Code Playgroud)
如果没有这个,.net 核心将创建一个ServiceCollection而不是一个,ContainerBuilder并且一个InvalidCastException将被抛出。
| 归档时间: |
|
| 查看次数: |
6019 次 |
| 最近记录: |