.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】

news2025/2/22 2:52:38

一、使用VSCode开发.NET项目

1、创建文件夹,使用VSCode打开

2、安装扩展工具

1>C#

2>安装NuGet包管理工具,外部dll包依靠它来加载

法1》:NuGet Gallery,注意要启动科学的工具

法2》NuGet Package Manager GUl,没办法从远端下载包,只能自己Install进行下载

例如导入SwashBuckle.AspNetCore包,进行Swagger配置

3>安装vscode-solution-explorer 用于管理C#项目

安装后vscode侧栏会多出一个按钮,也可以把solution移到界面上

    

4>安装C# Dev Kit

VS Code 中的 C# 和 .NET 入门(官方初学者指南) | Microsoft Learn

在欢迎页按照提示操作

5>安装Auto-Using for C#:编写代码时自动添加using

3、创建WebApi项目

1>创建新的solution,即解决方案

2>添加新项目

注意:.net8更新之后创建webapi没有控制器(Controller)的情况

在Visual Stdio中,不管创建.net几,勾选使用控制器就可以了

.NET Core 项目指定SDK版本-CSDN博客

dotnet new global.json --sdk-version <SDK版本号>

【在一、2、4>处可以安装SDK,在电脑“安装的应用”处可以看到安装的SDK版本号】

4、如何启动项目?

法1>按F5

法2>

法3>运行和调试

5、VSCode小技巧

 1>修改launch.json文件,使项目运行时直接打开swagger网页

把上面默认打开的网址注释掉

注意: “applicationUrl”是根目录

2>忽略一些文件夹让视野变得更清晰

二、.NET5的启动流程(Startup.cs和Program.cs配合)

1、下述2、的比喻解释

  • Main 方法:家的入口,从这里开始进入。
  • CreateHostBuilder:准备建造房子的过程,包括选择材料(如配置源)和设计方案(如日志记录、服务器等)。
  • Startup.cs里面的ConfigureServices:购买家具和家电,为房子添加功能(如控制器和视图服务)。
  • Startup.cs里面的Configure:安装和配置家具和家电,使它们能够正常工作(如配置中间件管道)。
  • Run:打开家门,让家人入住,开始正常生活(如监听和处理 HTTP 请求)。

2、具体启动流程

1>项目先从Program.cs里的Main函数进来,获取参数args

1》Main 方法的参数 args 是一个字符串数组,它包含了从命令行传递给应用程序的所有参数。
2》例如,通过终端dotnet命令去启动这个项目的时候,使用 

dotnet run --urls "http://localhost:5000" 。

        启动应用程序时,args 将包含 ["--urls", "http://localhost:5000"]

2>创建主机构建器:Main 方法中的 CreateHostBuilder(args)

  • 在 Main 方法中,通常会调用 CreateHostBuilder(args) 方法来创建一个主机构建器(IHostBuilder)。
  • CreateHostBuilder 方法内部使用 Host.CreateDefaultBuilder(args) 来初始化构建器,并将 args 传递给构建器。这样,构建器就可以使用这些参数来配置应用程序。

3>配置 Web 主机

  • 在 ConfigureWebHostDefaults 方法中,会进一步配置 Web 主机,包括设置服务器选项、中间件等。
  • 在这里,IConfiguration 会被用来读取配置信息,包括从命令行参数中读取的信息。

4>执行Startup.cs

  • 通过调用 webBuilder.UseStartup<Startup>(),指定 Startup 类作为应用程序的启动类。
  • Startup 类包含两个主要方法:ConfigureServices 和 Configure

5>配置服务:startup.cs里的ConfigureServices方法

  • 在 ConfigureServices 方法中,注册应用程序所需的服务到依赖注入容器中。
  • 例如,注册 MVC 控制器和视图的服务:services.AddControllersWithViews()

6>配置中间件:startup.cs里的Configure方法

  • 在 Configure 方法中,配置应用程序的中间件管道。
  • 中间件按照注册的顺序执行,用于处理 HTTP 请求和响应。
  • 使用 Use 方法将中间件添加到管道中。

7>构建主机:Main 方法中的.Build()

  • 在 Main 方法中,通过调用 CreateHostBuilder(args).Build()来构建和运行主机。
  • Build 方法会构建并返回配置好的主机实例。

8>运行主机:Main 方法中的.Run() 

  • 在 7>的 CreateHostBuilder(args).Build()后面,加上.Run() 来运行主机。
  • Run 方法会启动主机,并使其开始监听和处理请求。

三、.NET6的启动流程(在.NET5的基础上净化,只有Program.cs)

1、在主启动项目Program.cs里抛弃了类和入口函数,把它们隐匿到框架中了。

上图中代码上面的using、方法、命名空间等,都没有了,被单独地放到了另一个文件中。

2、具体启动流程:相当于把.NET5里的Startup.cs里的两个方法平铺到Program.cs里面

1>上图中第一句,var builder = WebApplication.CreateBuilder(args);

  • 使用 WebApplication.CreateBuilder(args) 方法来创建一个 WebApplicationBuilder 实例。
  • 这个构建器用于配置应用程序的服务、日志记录、配置源等。
  • args 参数是从命令行传递给应用程序的参数,它们可以被用来配置应用程序的行为。
  • 等于二、1>2>3>

2>上图第二句【配置服务】,builder.Services.AddcontrollersWithViews();

  • 在 WebApplicationBuilder 实例上,你可以调用 ConfigureServices 方法来注册应用程序所需的服务。
  • 这与 .NET 5 中的 Startup.cs 文件中的 ConfigureServices 方法类似,但现在在 Program.cs 文件中完成。
  • 等于二、5>

3>上图第三句【构建 Web 应用程序】,var app = builder.Build(); 

  • 使用 var app = builder.Build(); 语句来构建 WebApplication 实例。
  • 这个实例代表了整个 ASP.NET Core 应用程序,并提供了配置中间件管道的方法。
  • 等于二、7>

4>上图第三句后面的所有app.Use【配置中间件

  • 在 WebApplication 实例上,你可以使用 Use 方法来配置中间件。
  • 中间件用于处理 HTTP 请求和响应,它们按照添加的顺序执行。
  • 常见的中间件包括路由、认证、错误处理等。
  • 等于二、6>
2》此处区别.NET5框架的执行顺序

.NET5框架是在Build()里面执行Configure方法里的Use;

.NET6框架是先Build(),用Build生成的对象app,再执行Use使用。

5>上图最后一句【运行应用程序】:app.run()

  • 最后,使用 app.Run(); 语句来启动应用程序并使其开始监听和处理请求。
  • 等于二、8>

 

四、.NET6框架里最小的API:Minimal APls,具体见第2讲。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2243837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Homework】【7】Learning resources for DQ Robotics in MATLAB

阻尼伪逆使系统在任务空间奇异性方面具有一定的鲁棒性 阻尼伪逆 阻尼伪逆是SVD&#xff08;奇异值分解&#xff09;逆矩阵的一种有趣替代方法&#xff0c;它使系统在任务空间奇异性方面具有一定的鲁棒性。其主要思想是对任意&#xff08;可能为奇异的&#xff09;矩阵 B ∈ …

新一代API开发工具,让API调试更快 更简单

新一代API开发工具 代理调试 请求测试一站式解决方案 Reqable Fiddler Charles Postman, 让API调试更快 &#x1f680; 更简单 &#x1f44c; 直接上下载地址 根据系统,下载对应的版本即可 https://reqable.com/zh-CN/download/

详细解析STM32 GPIO引脚的8种模式

目录 一、输入浮空&#xff08;Floating Input&#xff09;&#xff1a;GPIO引脚不连接任何上拉或下拉电阻&#xff0c;处于高阻态 1.浮空输入的定义 2.浮空输入的特点 3.浮空输入的应用场景 4.浮空输入的缺点 5.典型配置方式 6.注意事项 二、输入上拉&#xff08;Inpu…

对于 unix 系统管理员来说,了解 VIM 有多重要?

对于 Unix 系统管理员来说&#xff0c;掌握 VIM 的重要性不言而喻。VIM 作为 Unix 系统中默认的文本编辑器&#xff0c;几乎在所有 Unix 系统中都预装&#xff0c;这使得系统管理员必须熟练使用它来编辑配置文件、编写脚本等。 VIM 强大的功能和灵活性&#xff0c;使得它能够满…

containerd使用

一、ctr命令 1.查看命名空间 ctr namespace ls 2.查看特定命名空间镜像 ctr -n k8s.io images ls 3.查看特定命名空间容器 ctr -n k8s.io container ls 注意&#xff1a;该项与docker不同&#xff0c;container查看容器是所有的容器无论有没有启动&#xff0c;只要创建了的…

Python 数据结构对比:列表与数组的选择指南

文章目录 &#x1f4af;前言&#x1f4af;Python中的列表&#xff08;list&#xff09;和数组&#xff08;array&#xff09;的详细对比1. 数据类型的灵活性2. 性能与效率3. 功能与操作4. 使用场景5. 数据结构选择的考量6. 实际应用案例7. 结论 &#x1f4af;小结 &#x1f4af…

在Q-Studio中进行OTX脚本的开发、仿真与调试

一 背景 现如今&#xff0c;随着车辆中电子器件和软件数量的快速增加&#xff0c;在车辆研发、生产、测试及售后阶段需要进行的车载测试工作越来越多、越来越复杂&#xff0c;呈现指数级增长的趋势。以往常用的手动测试方式已完全无法满足现如今的测试需求了&#xff0c;由此推…

Cursor安装Windows / Ubuntu

一、安装 1、下载软件 2、安装依赖 #安装fuse sudo apt-get install fuse3、将cursor添加到应用程序列表 sudo mv cursor-0.42.5x86_64.AppImage /opt/cursor.appimage #使用自己版本号替换 sudo chmod x /opt/cursor.appimage #给予可执行权限 sudo nano /usr/share/applic…

NLP论文速读(多伦多大学)|利用人类偏好校准来调整机器翻译的元指标

论文速读|MetaMetrics-MT: Tuning Meta-Metrics for Machine Translation via Human Preference Calibration 论文信息&#xff1a; 简介&#xff1a; 本文的背景是机器翻译&#xff08;MT&#xff09;任务的评估。在机器翻译领域&#xff0c;由于不同场景和语言对的需求差异&a…

Docker部署Kafka集群,增加 SASL_SSL认证,并集成到Spring Boot,无Zookeeper版

1&#xff0c;准备好Kafka 镜像包&#xff1a; bitnami/kafka:3.9.0 镜像资源包 2&#xff0c;准备好kafka.keystore.jks 和 kafka.truststore.jks证书 具体操作可参考&#xff1a; Docker部署Kafka SASL_SSL认证&#xff0c;并集成到Spring Boot-CSDN博客 3&#xff0c;配置…

Git 分⽀规范 Git Flow 模型

前言 GitFlow 是一种流行的 Git 分支管理策略&#xff0c;由 Vincent Driessen 在 2010 年提出。它提供了一种结构化的方法来管理项目的开发、发布和维护&#xff0c;特别适合大型和复杂的项目。GitFlow 定义了一套明确的分支模型和工作流程&#xff0c;使得团队成员可以更有效…

shell脚本命令1,保姆级别---清风

声明&#xff1a; 本文的学习内容来源于B站up主“泷羽sec”视频“蓝队基础之网络七层杀伤链”的公开分享&#xff0c;所有内容仅限于网络安全技术的交流学习&#xff0c;不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题&#xff0c;请联系本人&#xff0c;我将立即删除相…

MySQL扩展varchar字段长度能否Online DDL

目录 问题场景 Online DDL 简介 场景复现 DBdoctor快速识别 Online DDL 总结 问题场景 在MySQL数据库中&#xff0c;DDL变更可以通过两种算法实现&#xff1a;Copy算法和In-Place算法。Copy算法会复制整个表&#xff0c;这可能导致长时间的写入阻塞&#xff0c;从而严重影…

低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络

刚搬进新租的房子&#xff0c;没有网络&#xff0c;开个热点&#xff1f;续航不太行。随身WIFI&#xff1f;大多是百兆级网络。找人拉宽带&#xff1f;太麻烦&#xff0c;退租的时候也不能带着走。5G CPE倒是个不错的选择&#xff0c;插入SIM卡就能直接连接5G网络&#xff0c;千…

港大ArcLab最新开源DEIO:第一个学习与传统非线性图优化紧密结合的单目事件惯性里程计

原文链接&#xff1a;港大ArcLab最新开源DEIO&#xff1a;第一个学习与传统非线性图优化紧密结合的单目事件惯性里程计 导读 本文介绍了一种名为 DEIO&#xff08;Deep Event Inertial Odometry&#xff09;的新型单目深度事件惯性里程计框架。该方法创新性地将深度学习与传统…

基于麒麟服务器操作系统V10版本,部署Nginx服务、MySql服务搭建PHP环境,实现静态网站平台的搭建。

一、环境准备 关闭防火墙。 查看当前防火墙的状态 systemctl status firewalld Copy 如果防火墙的状态参数是inactive,则防火墙为关闭状态。 如果防火墙的状态参数是active,则防火墙为开启状态。 关闭防火墙。 如果您想临时关闭防火墙,需要运行以下命令: systemctl…

【priority_queue的使用及模拟实现】—— 我与C++的不解之缘(十六)

前言 ​ priority_queue&#xff0c;翻译过来就是优先级队列&#xff0c;但是它其实是我们的堆结构&#xff08;如果堆一些遗忘的可以看一下前面的文章复习一下【数据结构】二叉树——顺序结构——堆及其实现_二叉树顺序结构-CSDN博客&#xff09;&#xff0c;本篇文章就来使用…

在AndroidStudio中新建项目时遇到的Gradle下载慢问题,配置错的按我的来,镜像地址不知道哪个网页找的,最主要下载要快

android-studio-2024.2.1.11-windows Android 移动应用开发者工具 – Android 开发者 | Android Developers https://r4---sn-j5o76n7z.gvt1-cn.com/edgedl/android/studio/install/2024.2.1.11/android-studio-2024.2.1.11-windows.exe?cms_redirectyes&met1731775…

《Java核心技术 卷I》用户界面中首选项API

首选项API 在桌面程序中&#xff0c;通常都会存储用户首选项&#xff0c;如用户最后处理的文件、窗口的最后位置等。 利用Properties类可以很容易的加载和保存程序的配置信息&#xff0c;但有以下缺点&#xff1a; 有些操作系统没有主目录概念&#xff0c;很难为匹配文件找到…

服务器数据恢复—raid5阵列故障导致上层系统分区无法识别的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌DL380服务器&#xff0c;服务器中三块SAS硬盘组建了一组raid5阵列。服务器安装Windows Server操作系统&#xff0c;划分了3个分区&#xff0c;D分区存放数据库&#xff0c;E分区存放数据库备份。 服务器故障&#xff1a; RAID5阵列中有一…