ASP.NET Core WebApi(01)项目建立
前言:前一段时间学习了ASP.NET Core,决定写个简单的项目,旨在消化所学内容,并记录过程中遇到的问题。本章是第一篇,内容为项目的建立
一、准备工作
安装Visual Studio时,默认会安装上.NET Core SDK;如果没有安装,需要到微软官方网站下载.NET Core SDK,保证对ASP.NET Core的支持,目前版本是.NET Core 3.1,如下图,下载安装即可:

二、新建项目
1、打开VS,选择ASP.NET Core Web应用程序,如下图,如果找不到可以进行简单的筛选:

2、我们给项目起个名字,我想实现简单的分层,所以把解决方案名称修改了一下,如下图:

3、选择.NET Core和对应的版本号,这里我们选择API,右边高级中“为HTTPS配置”把勾去掉,如下图:

4、项目建立成功,我们F5运行一下看看,界面出现的是一个天气预报的Json数组,这里我的浏览器安装了扩展,所以看上去结构比较清晰,如下图:

5、页面是怎么出现的呢?看一下项目结构,原来项目中有一个天气预报的类和控制器方法:

三、解决方案文件说明
1、csproj文件
双击项目名称,会出现了一个后缀为csproj的文件,该文件包含的是一些项目信息,包括使用的SDK,目标框架版本信息,包含的目录信息,如下图:

2、launchsettings.json
点开Properties,会发现launchsettings.json文件,这是一个程序运行配置文件。
内部对应了两个配置,一个是IIS Express的配置,使用该配置时,VS会调用IIS Express运行项目,我们知道IIS Express是IIS的一个“迷你”版(项目运行时右下角可见),所以文件中还包括了一些IIS的设定;另一个是项目的配置,使用该配置时会使用dotnet run来运行程序,并默认使用Kestrel来替代传统的IIS,Kestrel支持跨平台,并且它性能更佳。
我们可以通过菜单栏中选择进行切换,或者右击项目选择属性后再调试选项页面中切换。

3、依赖项
依赖项中我们可以手动或使用NuGet来添加一些封装好的引用
4、appsetting.json与appsettings.Development.json
appsetting.json是应用程序配置文件,类似原先使用的WebConfig文件,里面默认对日志进行了一些配置。我们点开之后发现里面还有一个appsettings.Development.json文件,这个又是什么呢?
在实际的开发中,我们通常会配置多个环境,比如开发环境,生产环境以及模拟环境等,但是在不同的环境中,配置是不同的,比如数据库的连接,静态文件的是否压缩等等。为了满足这种需求,微软推出了这样的配置方式。

那么,它们的执行顺序是怎么样的呢?我们来看一下源码,系统会先加载appsetting.json,再加载目前设定的环境变量,比如appsettings.Development.json(在launchsettings.json中设置,可自定义),再加载UserSecrets,再加载计算机系统的环境变量,最后加载命令行变量。所以如果在上面5个设置中都添加了相同的参数变量,那么后执行的会覆盖前面执行的。

5、Program
接下来我们来看一下Program.cs文件,它其实对应了一个控制台应用,系统运行后首先会进入Main方法。
来看一下具体的流程:
1、Main方法会调用下方的CreateWebHostBuilder静态方法;
2、CreateWebHostBuilder静态方法会调用Host对象的CreateDefaultBuilder静态方法,在此方法中会加载一些默认的服务,包括:①使用ASP.NET Core内置的Kestrel Web Server(支持跨平台);②IIS集成(加载CLR运行时);③Log(可以在不同的地方显示日志信息);④IConfiguration接口(可以通过该接口获取项目的配置信息,即上面提到的5类配置信息)当然还有其他很多默认服务,如下图:


3、 CreateWebHostBuilder静态方法会返回一个IWebHostBuilder对象,该对象会通过UseStartUp实例化一个类加载整个Web应用的默认服务,系统默认使用的是StartUp类

6、Startup(重要)
最后我们来看一下Program中被调用的StartUp,它是系统默认的Web应用配置类。类的内部包括了其构造函数,ConfigurationServices方法和Configure方法。
1、构造函数:它获取了一个实现了IConfiguration接口的对象,Program中我们有提到IConfiguration接口默认会被加载,也就是说我们在这边就可以使用该对象获取配置信息。
2、ConfigurationServices:我们在这里进行服务的注册,前面有提到系统会加载一些默认的服务,其他系统默认实现好了的服务或者是我们自定义的服务,就需要我们自己在这里进行注册了。注册过之后我们就可以通过依赖注入的方式进行全局的使用。像在之前的.NET Framework中我们通过AutoFac或者Unity等第三方服务实现的IOC容器就可以在这里注册,但是ASP.NET Core已经内置了IOC容器,我们同样在这里注册就可以了。
3、Configure:我们在这里配置Http处理请求管道中间件,来响应ASP.NET Core程序的HTTP请求。另外需要注意的是中间件的添加顺序是十分重要的,比如异常处理中间件或验证中间件要放在比较靠前的位置,否则是无意义的。我们通常使用Use开头的方法进行注册中间件。

最后再来看下什么是中间件?中间件是应用程序管道中进行组装后,可以处理请求和响应的组件。它们会按照添加的顺序依次进行处理,处理完成后再依次进行返回。即前一个组件接受请求后,会将请求传递给下一个中间件,直至最后一个中间件处理完成后再逆序返回响应,如下图:

此外,每个中间件可以进行“短路”,举个例子,第2个中间件是验证中间件,发现请求的信息不满足验证要求,就会返回,不会再继续处理第3个中间件。
本人知识点有限,若文中有错误的地方请及时指正,方便大家更好的学习和交流。
本文参考了园中几位大佬的视频内容及图片,仅供学习和交流使用,视频地址如下:
solenovex,ASP.NET Core MVC 2.x 全面教程
solenovex,ASP.NET Core 3.x 入门视频
solenovex,使用 ASP.NET Core 3.x 构建 RESTful Web API
角落的白板报,《从零开始学ASP.NET Core与Entity Framework Core 》
ASP.NET Core WebApi(01)项目建立的更多相关文章
- ASP.NET Core WebApi
ASP.NET Core WebApi 创建项目 使用VS新建项目,选择ASP.NET Core WebAPI即可. 此时Startup的Configure.ConfigureService方法中如下 ...
- .NET Core:在ASP.NET Core WebApi中使用Cookie
一.Cookie的作用 Cookie通常用来存储有关用户信息的一条数据,可以用来标识登录用户,Cookie存储在客户端的浏览器上.在大多数浏览器中,每个Cookie都存储为一个小文件.Cookie表示 ...
- ASP.NET Core WebAPI 开发-新建WebAPI项目
ASP.NET Core WebAPI 开发-新建WebAPI项目, ASP.NET Core 1.0 RC2 即将发布,我们现在来学习一下 ASP.NET Core WebAPI开发. 网上已经有泄 ...
- ASP.NET Core WebAPI 开发-新建WebAPI项目 转
转 http://www.cnblogs.com/linezero/p/5497472.html ASP.NET Core WebAPI 开发-新建WebAPI项目 ASP.NET Core We ...
- ASP.NET Core WebApi 项目部署到 IIS 服务器的总结
Point: - ASP.NET Core WebApi 项目 - 发布到 IIS 服务器 1. 选择 File System 2. 输入要发布到的路径 # 其它默认,直接发布 3. 打开 IIS,添 ...
- Asp.Net Core 第01局:项目创建和部署 转载https://www.jianshu.com/p/9c9750e23b3e
总目录 一.前言 本文通过从项目创建到部署,简单介绍Asp.Net Core. 二.环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 三.开局 第一手:创建项目 ...
- 零基础ASP.NET Core WebAPI团队协作开发
零基础ASP.NET Core WebAPI团队协作开发 相信大家对“前后端分离”和“微服务”这两个词应该是耳熟能详了.网上也有很多介绍这方面的文章,写的都很好.我这里提这个是因为接下来我要分享的内容 ...
- 将 ASP.Net Core WebApi 应用打包至 Docker 镜像
将 ASP.Net Core WebApi 应用打包至 Docker 镜像 运行环境为 Windows 10 专业版 21H1, Docker Desktop 3.6.0(67351),Docker ...
- asp.net core webapi之跨域(Cors)访问
这里说的跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作 ...
- Asp.net Core WebApi 使用Swagger做帮助文档,并且自定义Swagger的UI
WebApi写好之后,在线帮助文档以及能够在线调试的工具是专业化的表现,而Swagger毫无疑问是做Docs的最佳工具,自动生成每个Controller的接口说明,自动将参数解析成json,并且能够在 ...
随机推荐
- PHP的运行方式(SAPI)
PHP 常量 PHP_SAPI 具有和 php_sapi_name() 相同的值. define('IS_CGI',(0 === strpos(PHP_SAPI,'cgi') || false !== ...
- usdt钱包对接,usdt 对接交易平台,usdtapi,以太坊对接,以太坊代币对接
usdt钱包对接,usdt 对接交易平台,usdtapi,以太坊对接,以太坊代币对接 自动充提币接口开发. 可对接:商城系统,游戏APP,交易平台,网站,各类APP -实现自动充提,查询,上链等功能接 ...
- android 软件(app)之家庭版记账本首次进行helloword等相关测试
在进行对于app的创建之前是对于android studio的相关安装的环境的配置,完成这些之后自己就写个一个简单的helloword的实例进行了测试.之后通过进一步的向下挖掘,发现当将hellowo ...
- (js描述的)数据结构[树结构1.1](11)
1.树结构: 我们不能说树结构比其他结构都要好,因为每种数据结构都有自己特定的应用场景. 但是树确实也综合了上面的数据结构的优点(当然有点不足于盖过其他的数据结构,比如效率一般情况下没有哈希表高) 并 ...
- Python 0(安装及初步使用+学习资源推荐)
不足之处,还请见谅,请指出不足.本人发布过的文章,会不断更改,力求减少错误信息. Python安装请借鉴网址https://www.runoob.com/python/python-install.h ...
- 数据库里账号的密码,需要怎样安全的存放?—— 密码哈希(Password Hash)
最早在大学的时候,只知道用 MD5 来存用户的账号的密码,但其实这非常不安全,而所用到的哈希函数,深入挖掘,也发现并不简单-- 一.普通的 Hash 函数 哈希(散列)函数是什么就不赘述了. 1.不推 ...
- JDK安装详细步骤
JDK的下载与安装 在java实际编程的道路上,迈出的第一步必定是JDK的安装,因为JDK是一切java的基础,这里给出在Windows10 x64版本下的JDK1.8的详细安装步骤,其他的Windo ...
- CSS盒模型属性详细介绍
一.概述 CSS盒模型是定义元素周围的间隔.尺寸.外边距.边框以及文本内容和边框之间内边距的一组属性的集合. 示例代码: <!DOCTYPE html> <html lang=&qu ...
- 小说免费看!python爬虫框架scrapy 爬取纵横网
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...
- 百度关键词搜索工具 v1.1|url采集工具 v1.1
功能介绍:关键词搜索工具 批量关键词自动搜索采集 自动去除垃圾二级泛解析域名 可设置是否保存域名或者url 持续更新中