“不支持返回 System.IServiceProvider 的 ConfigureServices。”在 .NET Core 3.1 中使用 Autofac
'ConfigureServices returning an System.IServiceProvider isn't supported.' in .NET Core 3.1 using Autofac
我想使用 autofac 注入而不是默认的 .net 核心解决方案。
这是我的启动文件:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddMvc(option => option.EnableEndpointRouting = false) ;
var cb = new ContainerBuilder();
cb.RegisterModule<mydependecymodule>();
cb.Populate(services);
var container = cb.Build();
return new AutofacServiceProvider(container);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseDeveloperExceptionPage();
app.UseStatusCodePages();
app.UseStaticFiles();
app.UseMvc(routes=>routes.MapRoute("default","/{controller=home}/{action=index}"));
}
这是我的 program.cs
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).UseServiceProviderFactory(new AutofacServiceProviderFactory());
但是当我 运行 我的应用程序时,我在我的主要方法中遇到了这个错误:
System.NotSupportedException: 'ConfigureServices returning an System.IServiceProvider isn't supported.'
在 ASP.NET Core 3.0 中,ASP.NET 核心托管模型发生了变化,您不能再 return IServiceProvider
。 This is documented in the Autofac docs for integrating with ASP.NET Core 3.0+.
您必须将 ConfigureServices
设为无效,如果您想直接使用 Autofac 注册内容,则需要使用 ConfigureContainer
。您还需要在构建主机时在 Program.Main
方法中注册 AutofacServiceProviderFactory
。文档中有示例说明如何执行此操作。
我想使用 autofac 注入而不是默认的 .net 核心解决方案。
这是我的启动文件:
public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(option => option.EnableEndpointRouting = false) ; var cb = new ContainerBuilder(); cb.RegisterModule<mydependecymodule>(); cb.Populate(services); var container = cb.Build(); return new AutofacServiceProvider(container); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseDeveloperExceptionPage(); app.UseStatusCodePages(); app.UseStaticFiles(); app.UseMvc(routes=>routes.MapRoute("default","/{controller=home}/{action=index}")); }
这是我的 program.cs
public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }).UseServiceProviderFactory(new AutofacServiceProviderFactory());
但是当我 运行 我的应用程序时,我在我的主要方法中遇到了这个错误:
System.NotSupportedException: 'ConfigureServices returning an System.IServiceProvider isn't supported.'
在 ASP.NET Core 3.0 中,ASP.NET 核心托管模型发生了变化,您不能再 return IServiceProvider
。 This is documented in the Autofac docs for integrating with ASP.NET Core 3.0+.
您必须将 ConfigureServices
设为无效,如果您想直接使用 Autofac 注册内容,则需要使用 ConfigureContainer
。您还需要在构建主机时在 Program.Main
方法中注册 AutofacServiceProviderFactory
。文档中有示例说明如何执行此操作。