[英]'ConfigureServices returning a System.IServiceProvider isn't supported.'
[英]System.NotSupportedException: 'ConfigureServices returning an System.IServiceProvider isn't supported.' with Structure Map
I am trying to inject the structure map into .net core 3.0 web API but Continuously I am getting the error in my Program.cs class. 沒找到map結構相關的解決方案,大家討論Autofac
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
我的啟動 class 是
public class Startup
{
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddControllers();
var container = new Container();
container.Configure(config =>
{
config.AddRegistry(new CustomRegistry());
config.Populate(services);
});
return container.GetInstance<IServiceProvider>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
如果您有任何建議,請告訴我。 感謝您提前提供幫助!
Program.cs 添加 AutofacServiceProviderFactory 就像在代碼下
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).UseServiceProviderFactory(new AutofacServiceProviderFactory());
然后在 StartUp.cs 中添加 ConfigureContainer
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(typeof(Program).Assembly).
Where(x => x.Name.EndsWith("service", StringComparison.OrdinalIgnoreCase)).AsImplementedInterfaces();
builder.RegisterDynamicProxy();
}
在 dotnet core 3.0 中改變 ioc 方式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.