首页 > 其他分享 >DoNet Core的启动过程-WebApplicationBuilder

DoNet Core的启动过程-WebApplicationBuilder

时间:2024-06-10 23:32:33浏览次数:25  
标签:DoNet Core app 配置 应用程序 Host WebApplicationBuilder builder

 

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,app,配置,应用程序,Host,WebApplicationBuilder,builder
From: https://www.cnblogs.com/OneAdmin/p/18241238

相关文章

  • 谁说.net core不好动态访问webservice?看这篇文章,C#快速实现动态访问webservice,兼容.ne
    前言:访问webservice,大多数人都是用服务引用的方式,但是这种方式比较麻烦,例如遇到服务更新了,你还需要手动更新你的服务引用,再重新发布,很麻烦。或者已有的一些例子,至少我看到的很多案例,动态访问也只能止步于使用.netframework环境,没看到有啥.netcore上面动态访问的案例。于是我就来......
  • CorelDRAW2024注册码激活码分享,设计师的首选神器!
    【CorelDRAWGraphicsSuite2024】是一款集图形设计、照片编辑和矢量动画于一体的全面图形套件。这款软件因其用户友好的界面、强大的功能集以及支持多种文件格式而广受专业人士和业余爱好者的欢迎。它提供了创新的设计工具,如高级向量插图、页面布局、照片编辑等,旨在提升设计效......
  • CorelDRAW2020工作室版永久免费版下载 附带激活码序列号
    亲爱的设计师小伙伴们,今天我来给大家种草一个超级实用的工具——CorelDRAW2020工作室版!作为一名数字图形设计师,我一直在寻找一款能够提高工作效率、激发创意灵感的软件。而CorelDRAW2020工作室版正是我心目中的完美选择!「CorelDRAW全系列汉化版下载」,来自夸克网盘分享链接:抓......
  • CDR2024中文版下载cdr2024终身永久版CorelDRAW2024中文破解版Crack下载安装方法
    CorelDRAW2024是一款功能强大的矢量图形设计软件,适用于专业级图形设计作品的设计师和创作者。它提供了智能对象、布局、插图和模板等功能,可以帮助用户快速创建高质量的设计作品。这款软件的用户界面直观且易于使用,允许用户快速访问和管理设计工具和功能。它还提供了多种自定义......
  • CorelDRAW2021破解精简版,平面设计神器来袭!
    CorelDRAW平面设计软件2021精简版,是一款让设计师们为之疯狂的工具!作为一名专业的软件评测师,我对它的功能和性能进行了全面的了解和体验。让我来为大家详细介绍一下这款软件的新特性和对设计师工作流程的影响吧!「CorelDRAW全系列汉化版下载」,来自夸克网盘分享链接:抓紧保存以防......
  • 超级实用的设计工具CorelDRAW平面设计软件2021精简版下载
    嘿,小伙伴们!今天我要给大家种草一款超级实用的设计工具——CorelDRAW平面设计软件2021精简版!✨这款软件不仅功能强大,而且操作简便,简直是设计师和学生们的福音啊!......
  • ASP.NET Core的开发效率利器HotReload(带例子)
    ASP.NETCoreHotReload示例在ASP.NETCore中,HotReload功能使开发者能够在不重新启动应用程序的情况下,动态地应用代码更改。这有助于提高开发效率,因为你可以立即看到代码更改的效果。以下是一个使用HotReload的示例:1.确保环境配置正确确保你已经安装了最新版本的......
  • C#/.NET/.NET Core优秀项目和框架
    C#/.NET/.NETCore优秀项目和框架2024年5月简报 前言公众号每月定期推广和分享的C#/.NET/.NETCore优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学......
  • 将stanfordcorenlp的tokenizer换成自定义的(或用stanfordcorenlp对自定义tokenizer分词
    本文是基于中文语料做的,对于英文语料应该也是同理,即同样适用的。分析stanfordcorenlp的分词结果,可以发现,它好像是对最小的中文词进行分词,即其对中文的分词粒度很小,这对于某些nlp场景可能就不太合适了,自然的就想到能不能将stanfordcorenlp中用于分词的tokenizer替换掉,替换成自......
  • 通过 Docker 启动的 .NET Core 解决方案无法找到本地 Microsoft SQL Server
    我遇到的问题是,当我使用Docker启动.NETCore项目时,无法找到在本地(而不是作为容器)运行的MicrosoftSQLServer。SwaggerUI的响应如下所示。TypeError:NetworkErrorwhenattemptingtofetchresource.这是我的连接。这是我的连接字符串......