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应用程序。

DoNet Core的启动过程-WebApplicationBuilder的更多相关文章

  1. 01 ASP.NET Core 3 启动过程(一)

    ASP.NET Core 3 启动过程(一) 最近又忙于各种扯淡,今天来一个需求,明天又来一个需求,后天需求又变了,这可能是很多人遇到的情况.正在紧张的忙碌着,突然一个信息把所有计划打乱了," ...

  2. 《ASP.NET Core 高性能系列》ASP.NET Core的启动过程(1)

    一.一切从头开始 简述:知道事情的真相就应该从头 开始,下面我们代码先行 public class Program { public static void Main(string[] args) { ...

  3. Asp.Net Core 3.1 的启动过程5

    前言 本文主要讲的是Asp.Net Core的启动过程,帮助大家掌握应用程序的关键配置点. 1.创建项目 1.1.用Visual Studio 2019 创建WebApi项目. 这里面可以看到有两个关 ...

  4. ASP.NET CORE 启动过程及源码解读

    在这个特殊的春节,大家想必都在家出不了们,远看已经到了回城里上班的日子,但是因为一只蝙蝠的原因导致我们无法回到工作岗位,大家可能有的在家远程办公,有些在家躺着看书,有的是在家打游戏:在这个特殊无聊的日 ...

  5. ASP.NET Core技术研究-探秘Host主机启动过程

    当我们将原有ASP.NET 应用程序升级迁移到ASP.NET Core之后,我们发现代码工程中多了两个类Program类和Startup类. 接下来我们详细探秘一下通用主机Host的启动过程. 一.P ...

  6. Openfire的启动过程与session管理

    说明   本文源码基于Openfire4.0.2.   Openfire的启动       Openfire的启动过程非常的简单,通过一个入口初始化lib目录下的openfire.jar包,并启动一个 ...

  7. Android4.4 以太网和DHCP启动过程介绍

    转自:http://blog.csdn.net/wlwl0071986/article/details/51451843 Android4.4已经加入了以太网的支持.现在对以太网的初始化流程.网络策略 ...

  8. Nginx学习笔记(六) 源码分析&启动过程

    Nginx的启动过程 主要介绍Nginx的启动过程,可以在/core/nginx.c中找到Nginx的主函数main(),那么就从这里开始分析Nginx的启动过程. 涉及到的基本函数 源码: /* * ...

  9. Android 启动过程简析

    首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...

  10. Android 核心分析 之八Android 启动过程详解

    Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...

随机推荐

  1. 进一步释放技术红利,阿里云推出全新内存增强型实例re6,性能提升30%

    5月7日,国内最大云计算厂商阿里云宣布推出全新一代内存增强型实例,提供1:14.8超大内存比内存容量,满足内存型数据库如SAP HANA.Redis等应用,充分释放技术红利,帮助线下企业快速上云,完成 ...

  2. 龙蜥正式开源 SysOM:百万级实战经验打造!一站式运维管理平台 | 龙蜥技术

    ​简介:SysOM集监控.告警.诊断.修复.安全能力于一体的操作系统运维平台. ​ 文/系统运维 SIG 如果你被突如其来的 OOPS 和满屏奇怪的函数弄得满头问号?机器内存明明很大,却申请不出来内存 ...

  3. KubeVela v1.2 发布:你要的图形化操作控制台 VelaUX 终于来了!

    ​简介:时间来到 2022 年,KubeVela 也正式进入了第四个阶段,在原先核心控制器 API 基本稳定的基础上,我们以插件的形式增加了一系列开箱即用的功能.让开发者可以通过 UI 控制台的方式, ...

  4. 搜索NLP行业模型和轻量化客户定制

    ​简介:开放搜索NLP行业模型和轻量化客户定制方案,解决减少客户标注成本.完全无标注或少量简单标注的等问题,让搜索领域扩展更易用. 特邀嘉宾: 徐光伟(昆卡)--阿里巴巴算法专家 搜索NLP算法 搜索 ...

  5. 深入理解 C++ 中的多态与文件操作

    C++ 多态 多态(Polymorphism)是面向对象编程(OOP)的核心概念之一,它允许对象在相同操作下表现出不同的行为.在 C++ 中,多态通常通过继承和虚函数来实现. 理解多态 想象一个场景, ...

  6. 🔥httpsok-v1.11.0支持CDN证书自动部署

    httpsok-v1.11.0支持CDN证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx .OpenResty 服务器设计.已服务众多中小企业,稳定.安 ...

  7. 一键自动化博客发布工具,用过的人都说好(infoq篇)

    infoq的博客发布界面也是非常简洁的.首页就只有基本的标题,内容和封面图片,所以infoq的实现也相对比较简单. 一起来看看吧. 前提条件 前提条件当然是先下载 blog-auto-publishi ...

  8. Java面试题:Spring Bean线程安全?别担心,只要你不写并发代码就好了!

    Spring中的Bean是否线程安全取决于Bean的作用域(scope).Spring提供了几种不同的Scope,其中包括Singleton.Prototype.Request.Session.Glo ...

  9. java学习之旅(day.06)

    switch多选择结构 多选择结构还有一个实现方式就是switch case switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支 switch(expression ...

  10. 『手撕Vue-CLI』编码规范检查

    前言 这篇为什么是编码规范检查呢?因为这是一个很重要的环节,一个好的编码规范可以让代码更加清晰易读,在官方的 VUE-CLI 也是有着很好的编码规范的,所以我也要加入这个环节. 其实不管在哪个项目中, ...