Autofac会在netcore 3+中支持IWebHostBuilder API吗



https://autofaccn.readthedocs.io/en/latest/integration/aspnetcore.html#asp-net-core-3-0-and-generic-hosting

看起来Autofac只支持通用主机APIIHostBuilder。我想知道旧的aspnetcore2.x文档是否仍然与aspnetcore3应用程序相关。

此外,我发现https://github.com/autofac/Autofac.AspNetCore已经很长时间没有更新了,所以我想Autofac未来无意支持IWebHostBuilder。。。

关于如何使用IWebHostBuilderAPI在AspNetCore 3.x中设置Autofac,我们有什么指导方针吗?

我读到关于[这个][https://stackoverflow.com/questions/59980827/service-fabric-aspnet-core-3-1-autofac-webhostbuilder]帖子,但它没有回答我的问题。

在ASP.NET Core 3.x中,他们改变了依赖项注入的集成方式,不,2.x版本的文档不再适用——无论是在Autofac情况下还是在ASP.NET情况下。ASP.NET Core有意转向通用主机模型,其中web主机是其之上的一层。

这并不是Autofac;无意支持CCD_ 4";,不是ASP.NET Core 3中的选项。它在框架一级发生了变化;这不再是与ASP.NET Core集成的方式。您不再将DI工厂连接到web主机,而是将其连接到外部通用主机。

您可以像在ASP.NET Core 2中一样,在Startup类中执行注册操作。

你链接的文档解释了所有这些,并展示了示例。您还可以在Microsoft ASP.NET Core 2到3迁移文档中看到HostBuilder取代了WebHostBuilder;而WebHostBuilder,虽然它可能仍然存在,但正在被弃用,你不应该使用它

您可以在Startup类上创建具有IWebHostEnvironment的构造函数参数,asp.net核心将自动注入IWebHostEnvironment

IWebHostBuilder注册为ConfigureContainer上的实例

请参阅以下代码。

public class Startup
{     
private readonly IWebHostEnvironment _environment;
// Auto injection IWebHostEnvironment
public Startup(IWebHostEnvironment environment)
{        
_environment = environment;
}

public void ConfigureServices(IServiceCollection services)
{
// ...
}
// Autofac ID
public void ConfigureContainer(ContainerBuilder builder)
{
// Register your own things directly with Autofac, like:
builder.Register<SampleClass>();

// Register your IWebHostEnvironment
builder.RegisterInstance(_environment);
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
}
}
public class SampleClass
{
private readonly IWebHostEnvironment _environment;
// If you register IWebHostEnvironment on the Startup, IWebHostEnvironment will auto inject.
public SampleClass(IWebHostEnvironment environment)
{
_environment = environment;
}
}

当您解析SampleClass时,您可以看到IWebHostEnvironment被自动注入构造函数。

最新更新