asp.net

ASP.NET Core 的 WebApplication 类和 WebApplicationBuilder 类

2024-03-09

WebApplication 类

ASP.NET Core 有3个 Host 类,是ASP.NET Core中用于初始化,生命周期管理,启动Web 服务的最重要的类。所以详细重点分析一下这几个类,分别是:


WebApplication,ASP.NET Core 6 引入的替代WebHost的类,可以用于 Web App或者 Web API

Host,非 Web App或者Web API 使用的 Host 类,比如纯控制台,或者 Windows Service。

WebHost,ASP.NET Core 6之前的版本使用的Host类。此处不再学习。

2个静态方法

CreateBuilder(),用于创建WebApplicationBuilder 对象,再用 Build 模式添加一些中间件,再创建WebApplication对象。

Create(),用于直接创建一个WebApplication对象,会默认添加和配置一些中间件。

使用CreateBuilder的例子代码:


var builder = WebApplication.CreateBuilder(args);

var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();


直接创建一个WebApplication对象的例子代码:


var app = WebApplication.Create(args);

app.MapGet("/", () => "Hello World!");

app.Run();


然后再用 Run()方法启动Web服务。包括 Run(),共有3个方法启动Web服务,区别是:


Run(),阻塞当前线程,直到 Host 关闭。

RunAsync(),启动 Host 的 Task,只有当 token 或者 shutdown 被触发时才会完成此。

StartAsync(),启动 Host的 Task,启动成功后立即返回 Task,然后 HTTP Server 可以接收 HTTP Request 。