Autofac 会在 netcore 3+ 中支持 IWebHostBuilder API 吗?
Will Autofac support IWebHostBuilder API in netcore 3+?
Autofac 似乎只支持通用托管 API、IHostBuilder
。我想知道旧的 asp netcore 2.x 文档是否仍然与 asp netcore 3 应用程序相关。
另外,我发现https://github.com/autofac/Autofac.AspNetCore好久没更新了,估计Autofac以后也无意支持IWebHostBuilder
...
关于如何使用 IWebHostBuilder
API 在 AspNetCore 3.x 中设置 Autofac,我们有任何指南吗?
我读到了 [this][ post,它没有回答我的问题。
您可以在启动时创建具有 IWebHostEnvironment
的构造函数参数 class 和 asp.net 核心将自动注入 IWebHostEnvironment
.
在 ConfigureContainer
.
上将 IWebHostBuilder
注册为实例
参见下面的代码。
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
被自动注入到构造函数中。
在 ASP.NET Core 3.x 中,他们改变了依赖注入的集成方式,不,版本 2.x 文档不再适用 - 无论是在 Autofac 案例中还是在 ASP.NET 案例。 ASP.NET Core 有意转移到通用托管模型,其中 Web 托管是其之上的一层。
并不是说 Autofac“无意支持 IWebHostBuilder
”,而是 在 ASP.NET Core 3 中这不是一个选项。它在框架级别;这不再是您与 ASP.NET Core 集成的方式。您不再将 DI 工厂附加到 Web 主机,而是将其附加到外部通用主机。
你做在你的Startup
class中注册东西就像在ASP.NET核心2中一样。
The docs you linked to explain all of that and show examples. You can also see in the Microsoft ASP.NET Core 2 to 3 migration docs HostBuilder
替换 WebHostBuilder
; WebHostBuilder
,虽然它可能仍然存在,但已被弃用,您不应该使用它。
Autofac 似乎只支持通用托管 API、IHostBuilder
。我想知道旧的 asp netcore 2.x 文档是否仍然与 asp netcore 3 应用程序相关。
另外,我发现https://github.com/autofac/Autofac.AspNetCore好久没更新了,估计Autofac以后也无意支持IWebHostBuilder
...
关于如何使用 IWebHostBuilder
API 在 AspNetCore 3.x 中设置 Autofac,我们有任何指南吗?
我读到了 [this][ post,它没有回答我的问题。
您可以在启动时创建具有 IWebHostEnvironment
的构造函数参数 class 和 asp.net 核心将自动注入 IWebHostEnvironment
.
在 ConfigureContainer
.
IWebHostBuilder
注册为实例
参见下面的代码。
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
被自动注入到构造函数中。
在 ASP.NET Core 3.x 中,他们改变了依赖注入的集成方式,不,版本 2.x 文档不再适用 - 无论是在 Autofac 案例中还是在 ASP.NET 案例。 ASP.NET Core 有意转移到通用托管模型,其中 Web 托管是其之上的一层。
并不是说 Autofac“无意支持 IWebHostBuilder
”,而是 在 ASP.NET Core 3 中这不是一个选项。它在框架级别;这不再是您与 ASP.NET Core 集成的方式。您不再将 DI 工厂附加到 Web 主机,而是将其附加到外部通用主机。
你做在你的Startup
class中注册东西就像在ASP.NET核心2中一样。
The docs you linked to explain all of that and show examples. You can also see in the Microsoft ASP.NET Core 2 to 3 migration docs HostBuilder
替换 WebHostBuilder
; WebHostBuilder
,虽然它可能仍然存在,但已被弃用,您不应该使用它。