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.配置应用程序
// 添加额外的配置源
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的更多相关文章
- 01 ASP.NET Core 3 启动过程(一)
ASP.NET Core 3 启动过程(一) 最近又忙于各种扯淡,今天来一个需求,明天又来一个需求,后天需求又变了,这可能是很多人遇到的情况.正在紧张的忙碌着,突然一个信息把所有计划打乱了," ...
- 《ASP.NET Core 高性能系列》ASP.NET Core的启动过程(1)
一.一切从头开始 简述:知道事情的真相就应该从头 开始,下面我们代码先行 public class Program { public static void Main(string[] args) { ...
- Asp.Net Core 3.1 的启动过程5
前言 本文主要讲的是Asp.Net Core的启动过程,帮助大家掌握应用程序的关键配置点. 1.创建项目 1.1.用Visual Studio 2019 创建WebApi项目. 这里面可以看到有两个关 ...
- ASP.NET CORE 启动过程及源码解读
在这个特殊的春节,大家想必都在家出不了们,远看已经到了回城里上班的日子,但是因为一只蝙蝠的原因导致我们无法回到工作岗位,大家可能有的在家远程办公,有些在家躺着看书,有的是在家打游戏:在这个特殊无聊的日 ...
- ASP.NET Core技术研究-探秘Host主机启动过程
当我们将原有ASP.NET 应用程序升级迁移到ASP.NET Core之后,我们发现代码工程中多了两个类Program类和Startup类. 接下来我们详细探秘一下通用主机Host的启动过程. 一.P ...
- Openfire的启动过程与session管理
说明 本文源码基于Openfire4.0.2. Openfire的启动 Openfire的启动过程非常的简单,通过一个入口初始化lib目录下的openfire.jar包,并启动一个 ...
- Android4.4 以太网和DHCP启动过程介绍
转自:http://blog.csdn.net/wlwl0071986/article/details/51451843 Android4.4已经加入了以太网的支持.现在对以太网的初始化流程.网络策略 ...
- Nginx学习笔记(六) 源码分析&启动过程
Nginx的启动过程 主要介绍Nginx的启动过程,可以在/core/nginx.c中找到Nginx的主函数main(),那么就从这里开始分析Nginx的启动过程. 涉及到的基本函数 源码: /* * ...
- Android 启动过程简析
首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...
- Android 核心分析 之八Android 启动过程详解
Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...
随机推荐
- 进一步释放技术红利,阿里云推出全新内存增强型实例re6,性能提升30%
5月7日,国内最大云计算厂商阿里云宣布推出全新一代内存增强型实例,提供1:14.8超大内存比内存容量,满足内存型数据库如SAP HANA.Redis等应用,充分释放技术红利,帮助线下企业快速上云,完成 ...
- 龙蜥正式开源 SysOM:百万级实战经验打造!一站式运维管理平台 | 龙蜥技术
简介:SysOM集监控.告警.诊断.修复.安全能力于一体的操作系统运维平台. 文/系统运维 SIG 如果你被突如其来的 OOPS 和满屏奇怪的函数弄得满头问号?机器内存明明很大,却申请不出来内存 ...
- KubeVela v1.2 发布:你要的图形化操作控制台 VelaUX 终于来了!
简介:时间来到 2022 年,KubeVela 也正式进入了第四个阶段,在原先核心控制器 API 基本稳定的基础上,我们以插件的形式增加了一系列开箱即用的功能.让开发者可以通过 UI 控制台的方式, ...
- 搜索NLP行业模型和轻量化客户定制
简介:开放搜索NLP行业模型和轻量化客户定制方案,解决减少客户标注成本.完全无标注或少量简单标注的等问题,让搜索领域扩展更易用. 特邀嘉宾: 徐光伟(昆卡)--阿里巴巴算法专家 搜索NLP算法 搜索 ...
- 深入理解 C++ 中的多态与文件操作
C++ 多态 多态(Polymorphism)是面向对象编程(OOP)的核心概念之一,它允许对象在相同操作下表现出不同的行为.在 C++ 中,多态通常通过继承和虚函数来实现. 理解多态 想象一个场景, ...
- 🔥httpsok-v1.11.0支持CDN证书自动部署
httpsok-v1.11.0支持CDN证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx .OpenResty 服务器设计.已服务众多中小企业,稳定.安 ...
- 一键自动化博客发布工具,用过的人都说好(infoq篇)
infoq的博客发布界面也是非常简洁的.首页就只有基本的标题,内容和封面图片,所以infoq的实现也相对比较简单. 一起来看看吧. 前提条件 前提条件当然是先下载 blog-auto-publishi ...
- Java面试题:Spring Bean线程安全?别担心,只要你不写并发代码就好了!
Spring中的Bean是否线程安全取决于Bean的作用域(scope).Spring提供了几种不同的Scope,其中包括Singleton.Prototype.Request.Session.Glo ...
- java学习之旅(day.06)
switch多选择结构 多选择结构还有一个实现方式就是switch case switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支 switch(expression ...
- 『手撕Vue-CLI』编码规范检查
前言 这篇为什么是编码规范检查呢?因为这是一个很重要的环节,一个好的编码规范可以让代码更加清晰易读,在官方的 VUE-CLI 也是有着很好的编码规范的,所以我也要加入这个环节. 其实不管在哪个项目中, ...