.net6中webaplication创建host主机后,有哪些DI 容器
时间: 2024-02-11 20:05:47 浏览: 118
.NET Core基于Generic Host实现后台任务方法教程
在 .NET 6 中,WebApplication 创建主机后,会默认创建以下 DI 容器:
1. 应用程序主机容器(Host Container):用于存储应用程序的全局服务。例如,ILogger、IConfiguration、IWebHostEnvironment 等。
2. Web 主机容器(Web Host Container):用于存储 Web 应用程序特定的服务。例如,IMvcBuilder、IEndpointRouteBuilder、IApplicationBuilder 等。
3. Web 请求容器(Web Request Container):用于每个 HTTP 请求创建一个独立的容器,存储请求特定的服务。例如,HttpContext、HttpRequest、HttpResponse 等。
这些 DI 容器是通过 ASP.NET Core 中的内置 DI 容器实现的。可以使用以下方法获取 DI 容器:
1. 应用程序主机容器
```csharp
var host = WebApplication.CreateHostBuilder(args).Build();
var serviceProvider = host.Services;
```
2. Web 主机容器
```csharp
var host = WebApplication.CreateHostBuilder(args).Build();
var webHost = host.Services.GetRequiredService<IWebHost>();
var serviceProvider = webHost.Services;
```
3. Web 请求容器
```csharp
app.Use(async (context, next) =>
{
var requestServices = context.RequestServices;
// ...
await next();
});
```
在以上示例中,可以通过 `GetRequiredService` 或 `RequestServices` 属性来获取 DI 容器。需要注意的是,Web 请求容器只能在请求管道中访问,不能在应用程序或 Web 主机容器中访问。
ASP.NET Core 的内置 DI 容器功能非常强大,可以用于注册和解析各种类型的服务。通过使用 DI 容器,可以轻松地将应用程序的各个部分解耦,并使应用程序更易于测试和维护。
阅读全文