DoNet Core的启动过程-WebApplicationBuilder

1.前言

在NET6开始做ASP.NETCore的开发,我们首先要看的是启动过程,而WebApplication和WebApplicationBuilder 类是启动过程好不开的类,WebApplicationBuilder 来引导启动,这和前面Core的版本引导启动分为Program和Startup是不同的,.NET6及以上版本直接使用Program中引导启动,而WebApplication在Run之前,需要做4步配置,主机配置、应用程序配置、服务注册、中间件设置。

2. 主机配置

2.1. 配置WebHost

WebApplicationBuilder 的只读属性 Host 属性是一个 IHostBuilder 实例,你可以用它来配置主机相关的设置。例如,可以通过调用 Host.ConfigureHostConfiguration 方法来配置主机配置,或者通过 Host.ConfigureLogging 方法来配置日志系统。

2.2创建实例

使用 WebApplicationBuilder.CreateDefault(args) 方法可以创建一个 WebApplicationBuilder 的实例,其中 args 是命令行参数数组。该方法会默认加载一些常见的配置和服务,如环境变量、日志、配置系统等。

复制代码
var builder = WebApplicationBuilder.CreateDefault(args);

2. 配置主机

WebApplicationBuilder 的 Host 属性是一个 IHostBuilder 实例,可以用它来配置主机相关的设置。例如,可以通过调用 Host.ConfigureHostConfiguration 方法来配置主机配置,或者通过 Host.ConfigureLogging 方法来配置日志系统。

复制代码
builder.Host.ConfigureHostConfiguration(configHost => 
{ 
// 配置主机配置 
configHost.AddEnvironmentVariables("PREFIX_"); 
}); 
builder.Host.ConfigureLogging(logging => 
{ 
// 配置日志系统 
logging.AddConsole(); 
});

3.配置应用程序

通过 WebApplicationBuilder 实例本身,可以配置应用程序的配置和服务。
· 配置 :可以使用 builder.Configuration 来访问应用程序的配置系统,并添加额外的配置源。
· 服务 :使用 builder.Services 来访问服务容器,并注册服务。

复制代码
// 添加额外的配置源 
    builder.Configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); 
    
    // 注册服务 
    builder.Services.AddControllers(); 
    builder.Services.AddEndpointsApiExplorer(); 
    builder.Services.AddSwaggerGen();

4.构建WebApplication

完成所有必要的配置和服务注册,就可以使用 Build 方法来构建 WebApplication 实例。

复制代码
var app = builder.Build();

这个 WebApplication 实例包含了所有已配置的中间件、服务、路由等,并准备运行。

5.配置中间件

在构建 WebApplication 实例之后,你可以使用它来配置中间件。这通常包括错误处理、路由、认证、授权等。

复制代码
if (app.Environment.IsDevelopment()) 
{ 
app.UseDeveloperExceptionPage(); 
app.UseSwagger(); 
app.UseSwaggerUI(); 
} 

app.UseHttpsRedirection(); 
app.UseRouting(); 
app.UseAuthorization(); 

app.MapControllers(); 
app.Run();

6.运行应用程序

调用 Run 方法或配置其他服务器(如Kestrel)来启动并运行应用程序。直接调用了 app.Run(),它会自动启动Kestrel服务器。

总结

WebApplicationBuilder 提供了构建ASP.NET Core Web应用程序所需的大部分功能,并以一种更加集中和简洁的方式组织代码。它使得配置、服务注册和中间件设置变得更加直观和易于管理。通过这个类,可以更轻松地构建、配置和运行ASP.NET Core Web应用程序。

相关推荐
JackieZhengChina6 个月前
SqlSugar 集成
c#·.net·orm·sqlsugar·net core
天堂画家10 个月前
【NET跨平台】4.对依赖注入容器的补充
c#·生命周期·依赖注入·net5·net core·net
胖纸不争1 年前
Ef Core花里胡哨系列(10) 动态起来的 DbContext
数据库·c#·ef core·net core