第1章 ASP.NET Core介绍 1
1.1 为什么要使用ASP.NET Core 1
1.2 如何跨平台 1
第2章 开发环境准备 4
2.1 概述 4
2.2 Windows环境下Visual Studio的安装 4
2.3 macOS环境下Visual Studio的安装 5
第3章 项目结构 6
3.1 新建项目 6
3.2 项目结构详解 7
3.2.1 launchSettings.json 7
3.2.2 wwwroot 9
3.2.3 框架 9
3.2.4 _Layout.cshtml 11
3.2.5 _ValidationScriptsPartial.cshtml 11
3.2.6 _ViewImports.cshtml 12
3.2.7 _ViewStart.cshtml 13
3.2.8 appsettings.json和appsettings.Development.json 14
3.2.9 Program.cs 14
3.2.10 Startup.cs 15
第4章 _Layout与_ViewStart 17
4.1 _Layout的应用 17
4.2 _ViewStart的应用 20
4.3 页面的加载顺序 20
第5章 TagHelper 22
5.1 概述 22
5.2 自定义TagHelper 24
5.3 TagHelper的注册 25
5.4 TagHelper的作用范围 25
5.5 自定义标签 27
5.6 TagHelper与页面之间的数据传递 28
5.7 取消标签输出 29
5.8 TagBuilder 29
第6章 应用的跨平台部署 31
6.1 概述 31
6.2 在CentOS中安装ASP.NET Core环境 31
6.3 在Windows上用Visual Studio发布项目 32
6.4 项目运行测试 32
6.5 创建service管理应用 33
6.6 安装Nginx 34
6.7 SSL免费证书申请 34
6.8 多网站及证书配置 36
6.9 启用ForwardedHeaders中间件 38
6.10 独立部署(SCD) 39
第7章 架构概览 40
7.1 ASP.NET Core的运行机制 40
7.2 ASP.NET Core Application的架构 41
7.3 对HTTP/2的支持 41
7.3.1 Kestrel 41
7.3.2 IIS(进程内) 41
7.4 ASP.NET Core的环境变量 42
第8章 应用启动 43
8.1 概述 43
8.2 HostBuilder的创建与配置 45
8.2.1 Host的创建者HostBuilder 45
8.2.2 GenericWebHostBuilder 50
8.2.3 处理Startup文件 53
8.3 Host的构建 57
8.4 Host的启动 63
第9章 后台服务 66
9.1 应用场景 66
9.2 实现方式 66
9.2.1 实现IHostedService接口 67
9.2.2 在依赖注入中注册这个服务 68
9.3 采用BackgroundService派生类的方式 68
9.4 注意事项 70
第10章 依赖注入 71
10.1 为什么要用依赖注入 71
10.2 容器的构建和规则 73
10.3 ASP.NET Core的依赖注入 74
10.3.1 IServiceCollection 75
10.3.2 ServiceDescriptor 76
10.3.3 IServiceProvider 76
10.3.4 IServiceScope 77
10.4 实例获取方法及需要注意的问题 77
10.5 服务的Dispose 80
10.6 更换容器 81
第11章 日志 82
11.1 内置日志的使用 82
11.2 使用NLog将日志输出到文件 83
11.3 注意事项 84
11.4 NLog配置简要说明 85
第12章 应用的配置 86
12.1 常见的配置方式 86
12.1.1 文件方式 86
12.1.2 目录和文件 89
12.1.3 命令行 89
12.1.4 环境变量 90
12.1.5 内存对象 91
12.2 内部处理机制解析 92
12.2.1 数据源的注册 92
12.2.2 数据源的加载 99
12.2.3 配置的读取 101
12.2.4 配置的更新 106
12.2.5 配置的绑定 106
第13章 配置的Options模式 108
13.1 Options的使用 108
13.1.1 简单的不为Option命名的方式 108
13.1.2 为Option命名的方式 109
13.1.3 Option的自动更新与生命周期 110
13.1.4 数据更新提醒 111
13.1.5 其他配置方式 112
13.2 内部处理机制解析 113
13.2.1 系统启动阶段的依赖注入 113
13.2.2 Options值的获取 116
第14章 请求处理管道 121
14.1 概述 121
14.2 请求在管道中的处理流程 122
14.2.1 简单的中间件例子 122
14.2.2 请求是如何经过各个中间件的 122
14.3 管道的构建 124
14.4 中间件的其他定义方式 127
14.5 Use、Run和Map 128
14.5.1 Use和Run 128
14.5.2 Map 129
14.5.3 MapWhen 130
14.5.4 UseWhen 130
14.6 IStartupFilter 131
第15章 静态文件访问与授权 133
15.1 静态文件夹 133
15.2 中间件的实现机制 134
15.3 新增静态文件目录 135
15.4 静态文件的授权管理 135
第16章 路由 137
16.1 概述 137
16.2 传统路由配置 138
16.3 属性路由设置 139
16.4 路由的匹配顺序 142
16.5 路由的约束 144
16.5.1 Constraints参数方式 144
16.5.2 行内简写方式 145
16.5.3 使用正则表达式 145
16.5.4 自定义约束 146
16.6 路由的dataTokens 147
16.7 路由的初始化源码解析 148
16.7.1 UseRouting方法 148
16.7.2 UseEndpoints方法 149
16.8 路由的请求处理源码分析 152
16.8.1 EndpointRoutingMiddleware 152
16.8.2 Endpoint的生成与匹配示例 159
16.8.3 EndpointMiddleware 161
16.9 Endpoint模式的路由方案的优点 161
第17章 Action的执行 163
17.1 概述 163
17.2 invoker的生成 163
17.3 invoker的执行 171
第18章 Action参数的模型绑定 177
18.1 概述 177
18.2 准备阶段 178
18.2.1 创建绑定方法 178
18.2.2 为每个参数匹配Binder 179
18.3 执行阶段 183
18.4 相关知识 186
18.4.1 propertyBindingInfo 187
18.4.2 JsonPatch 187
第19章 Filter详解 188
19.1 概述 188
19.2 Filter的简单例子 189
19.3 Filter的用法详解 190
19.3.1 单例验证 191
19.3.2 通过Attribute方式定义与注册 191
19.3.3 支持继承方式注册 192
19.3.4 多功能Filter 193
19.3.5 Filter的同步与异步 194
19.3.6 继承内置FilterAttribute 195
19.4 Filter的获取 197
19.5 Filter的执行 200
19.6 Filter的执行顺序 212
第20章 控制返回类型 215
20.1 常见的返回类型 215
20.1.1 返回类型 215
20.1.2 异步方法 217
20.2 内部处理机制解析 218
20.2.1 总体流程 218
20.2.2 ActionMethodExecutor的选择与执行 219
20.2.3 Result Filter的执行 223
20.2.4 IActionResult的执行 225
20.2.5 ObjectResult的执行与返回格式的协商 227
20.3 自定义IActionResult 237
20.4 自定义格式化类 240
20.5 添加XML类型支持 242
第21章 一个API与小程序的项目 244
21.1 前期准备 244
21.1.1 服务器环境搭建 245
21.1.2 安装MongoDB数据库 245
21.1.3 微信小程序注册 246
21.2 API项目的基本功能 248
21.2.1 项目创建 248
21.2.2 操作MongoDB数据库 248
21.2.3 Model定义 252
21.2.4 Service接口及实现 254
21.2.5 Repository接口及实现 255
21.2.6 Controller与Action 257
21.2.7 AutoMapper的使用 258
21.3 应用JWT进行用户认证 259
21.3.1 JWT的组成 260
21.3.2 认证流程 261
21.3.3 用户登录与Token的发放 262
21.4 自定义用户授权 272
21.4.1 样例数据 272
21.4.2 自定义授权处理 274
21.5 使用Swagger生成Web API的帮助页 276
21.6 微信小程序 277
21.6.1 欢迎页 278
21.6.2 列表页 282
21.6.3 图表页 285