深入淺出 ASP.NET Core

深入淺出 ASP.NET Core

作者: 梁桐銘
出版社: 人民郵電
出版在: 2020-09-01
ISBN-13: 9787115541093
ISBN-10: 7115541094
總頁數: 696 頁





內容描述


本書是一本系統地介紹ASP.NET Core、Entity Framework Core以及ASP.NET Core Identity框架技術的入門圖書,旨在幫助讀者循序漸進地瞭解和掌握ASP.NET Core。本書使用ASP.NET Core從零開始搭建一個實際的項目。從基本的控制台應用程序開始,介紹ASP.NET Core基本的啟動流程,涵蓋ASP.NET Core框架中各個技術的實際應用。同時,本書也會介紹一些ASP.NET Core的高級概念。在本書中,我們會開發一個學校管理系統,其中包含清晰的操作步驟和大量的實際代碼,以幫助讀者學以致用,將ASP.NET Core的知識運用到實際的項目開發當中,最後我們會將開發的項目部署到生產環境中。通過閱讀本書,讀者將掌握使用ASP.NET Core開發Web應用程序的方法,並能夠在對新項目進行技術選型時做出戰略決策。
本書適合有一定C# 編程經驗和HTML、JavaScript基礎,並對ASP.NET Core感興趣的讀者閱讀,也可以作為高等院校相關專業的教學用書和培訓學校的教材。


目錄大綱


第 一部分
第 1章 編程語言和 .NET的關系 2
1.1 編程語言 2
1.2 編程語言中的C#、 F#和VB.NET 2
1.3 C#與.NET 3
1.4 小結 3
第 2章 .NET平臺 4
2.1 回顧.NET發展歷史 4
2.1.1 .NET Framework 4
2.1.2 .NET Framework與Java 5
2.1.3 .NET的跨平臺之路 5
2.2 Mono神奇的跨平臺解決方案 6
2.3 .NET Standard 6
2.4 .NET Core 7
2.4.1 .NET Core的特點 7
2.4.2 .NET Core 3.1 8
2.5 .NET Core與其他平臺 8
2.5.1 .NET Core與.NET Framework 8
2.5.2 .NET Core與Mono 8
2.5.3 .NET Core與ASP .NET Core 8
2.6 ASP .NET的發展歷程 9
2.7 ASP.NET Core的未來發展 9
2.8 小結 10
第3章 .NET 5的統一整合方案 11
3.1 進化中的.NET 11
3.2 .NET 5 (.NET Core vNext) 12
3.3 .NET Core實現真正的統一開發平臺 13
3.4 小結 14
第4章 創建ASP.NET Core項目 15
4.1 ASP.NET Core 15
4.2 ASP.NET Core的特性 15
4.3 配置電腦的開發環境 17
4.3.1 下載並安裝Visual Studio 2019 17
4.3.2 下載並安裝.NET Core SDK 18
4.4 創建ASP.NET Core Web程序 18
4.5 內置的ASP.NET Core模板說明 20
4.6 小結 21
第5章 ASP.NET Core項目啟動流程 23
5.1 ASP.NET Core項目文件 23
5.2 ASP.NET Core項目的入口 25
5.3 ASP.NET Core中的進程內與進程外托管模型 26
5.3.1 進程內托管 27
5.3.2 Kestrel 28
5.3.3 CLI 28
5.4 ASP.NET Core進程外托管 29
5.5 探討幾個問題 30
5.6 小結 31
第6章 ASP.NET Core中的配置文件 33
6.1 啟動配置信息 33
6.2 通過GUI來設置launchSettings文件 35
6.3 ASP.NET Core appsettings.json文件 36
6.3.1 訪問配置信息 37
6.3.2 appsettings.json 39
6.3.3 用戶機密 39
6.3.4 環境變量 41
6.3.5 命令行參數 41
6.4 ASP.NET Core IConfiguration服務與依賴註入 42
6.5 小結 44
第7章 ASP.NET Core中的中間件及其工作原理 45
7.1 中間件 45
7.2 中間件在ASP.NET Core中的工作原理 47
7.3 配置ASP.NET Core請求處理管道 48
7.4 Configure()代碼解析 49
7.4.1 中間件掌握測試 49
7.4.2 中間件傳遞 50
7.4.3 實踐中間件的工作流程 50
7.5 小結 52
第8章 ASP.NET Core中的靜態文件中間件 54
8.1 添加靜態文件中間件 54
8.2 支持默認文件 55
8.3 自定義默認文件 56
8.4 UseFileServer中間件 56
8.5 小結 57
第9章 ASP.NET Core開發人員異常頁面 58
9.1 UseDeveloperExceptionPage中間件 58
9.2 自定義UseDeveloperExceptionPage中間件 60
9.3 UseDeveloperExceptionPage中間件如何工作 60
9.4 ASP.NET Core中的環境變量配置 61
9.5 配置ASPNETCORE_ENVIRONMENT變量 62
9.6 IWebHostEnvironment服務中的常用方法 64
9.7 小結 65
第二部分
第 10章 詳解ASP.NET Core MVC的設計模式 68
10.1 什麽是MVC 68
10.1.1 MVC如何工作 69
10.1.2 Model 70
10.1.3 View 71
10.1.4 Controller 71
10.2 在ASP.NET Core中安裝MVC 73
10.2.1 在ASP.NET Core中配置MVC 73
10.2.2 添加HomeController 74
10.3 AddMvc()和AddMvcCore()的源代碼解析 75
10.4 小結 77
第 11章 依賴註入與Student模型 78
11.1 依賴註入 78
11.2 詳細瞭解ASP.NET Core中的依賴註入 80
11.3 使用依賴註入註冊服務 81
11.4 小結 83
第 12章 從Controller傳遞內容協商數據到View 84
12.1 Controller請求及相應流程說明 84
12.1.1 從Controller中返回JSON數據 85
12.1.2 安裝Fiddler 86
12.2 在Controller中實現內容協商 86
12.3 從Controller返回View 89
12.3.1 MVC中的View 89
12.3.2 視圖文件夾結構 90
12.3.3 視圖發現 90
12.3.4 View()重載方法 93
12.4 自定義視圖發現 93
12.4.1 指定視圖文件路徑 93
12.4.2 相對視圖文件路徑 94
12.4.3 其他View()重載方法 94
12.5 從Controller傳遞數據到View 95
12.5.1 數據從Controller傳遞到View的方法 95
12.5.2 使用ViewData將數據從Controller傳遞到View 95
12.5.3 使用ViewBag將數據從Controller傳遞到View 97
12.5.4 ViewData和ViewBag的對比 98
12.5.5 在ASP.NET Core MVC中創建一個強類型視圖 98
12.6 小結 100
第 13章 完善MVC框架內容 102
13.1 為什麽需要在ASP.NET Core MVC中使用ViewModel 102
13.1.1 ViewModel示例 103
13.1.2 在Controller中使用ViewModel 103
13.1.3 在視圖中使用ViewModel 104
13.2 在ASP.NET Core MVC中實現List視圖 104
13.2.1 修改IStudentRepository中的代碼 105
13.2.2 修改MockStudentRepository中的代碼 105
13.2.3 修改HomeController中的代碼 106
13.2.4 視圖Index.cshtml中代碼的變化 106
13.3 為什麽需要佈局視圖 107
13.3.1 ASP.NET Core MVC中的佈局視圖 108
13.3.2 創建佈局視圖 109
13.3.3 使用佈局視圖 109
13.4 佈局頁面中的節點 110
13.4.1 佈局頁面示例 110
13.4.2 渲染節點 111
13.4.3 使佈局部分可選 111
13.4.4 節點的使用 112
13.5 什麽是_ViewStart.cshtml文件 113
13.5.1 ASP.NET Core MVC中的_ViewStart.cshtml文件 113
13.5.2 _ViewStart.cshtml文件支持分層 113
13.5.3 邏輯判斷調用佈局視圖 114
13.5.4 修改視圖 114
13.6 ASP.NET Core MVC中的_ViewImports.cshtml文件 116
13.7 小結 117
第 14章 ASP.NET Core MVC中的路由 118
14.1 ASP.NET Core MVC中的默認路由 119
14.2 UseMvcWithDefaultRoute()方法中的代碼 120
14.3 ASP.NET Core MVC中的屬性路由 122
14.3.1 屬性路由示例 123
14.3.2 屬性路由參數 123
14.3.3 屬性路由可選參數 124
14.3.4 控制器和操作方法名稱 125
14.3.5 屬性路由支持多層 125
14.3.6 在屬性路由中自定義路由 128
14.3.7 常規路由與屬性路由對比 129
14.4 ASP.NET Core中新增的路由中間件 129
14.4.1 路由中間件UseRouting 130
14.4.2 路由中間件UseEndpoints 131
14.5 LibMan輕量級包管理器 133
14.5.1 使用LibMan安裝Bootstrap 133
14.5.2 libman.json文件 134
14.5.3 清理和還原客戶端庫 134
14.5.4 卸載或更新客戶端庫 134
14.5.5 libman.json文件說明 135
14.5.6 在網站中自定義CSS樣式表 136
14.6 在ASP.NET Core應用程序中使用Bootstrap 136
14.6.1 Details.cshtml視圖優化 137
14.6.2 Index.cshtml視圖優化 137
14.7 小結 139
第 15章 ASP.NET Core中的TagHelper 140
15.1 導入內置TagHelper 140
15.1.1 使用TagHelper生成Link鏈接 140
15.1.2 TagHelper中的Link標簽 141
15.2 為什麽要使用TagHelper 141
15.3 Image TagHelper 144
15.3.1 瀏覽器緩存 145
15.3.2 禁用瀏覽器緩存 145
15.3.3 HTTP狀態碼中的200與302 146
15.3.4 ASP.NET Core中的Image TagHelper 146
15.3.5 驗證Image TagHelper 147
15.4 ASP.NET Core中的Environment TagHelper 148
15.4.1 設置應用程序環境的名稱 148
15.4.2 如果CDN “掛了”怎麽辦 149
15.5 使用Bootstrap給項目添加導航菜單 150
15.6 Form TagHelpers提交學生信息 153
15.6.1 場景描述 153
15.6.2 Form TagHelper 154
15.6.3 Input TagHelper 154
15.6.4 Label TagHelper 155
15.6.5 Select TagHelper 155
15.6.6 Create.cshtml中基本的HTML代碼 156
15.6.7 Bootstrap優化後的Create.cshtml的代碼 158
15.7 小結 159
第 16章 ASP.NET Core中的模型綁定與模型驗證 160
16.1 ASP.NET Core中模型綁定的簡單例子 160
16.2 在IStudentRepository接口中添加Add() 方法 162
16.2.1 在MockStudentRepository類中實現Add() 方法 163
16.2.2 HttpGet與HttpPost 163
16.2.3 運行結果 165
16.3 ASP.NET Core中的模型驗證 166
16.3.1 模型驗證示例 166
16.3.2 ModelState.IsValid屬性驗證 168
16.3.3 在視圖中顯示模型驗證錯誤 168
16.3.4 自定義模型驗證錯誤消息 169
16.3.5 ASP.NET Core內置模型驗證屬性 169
16.3.6 顯示屬性 169
16.3.7 使用多個模型驗證屬性 170
16.3.8 自定義模型驗證錯誤的顏色 170
16.4 ASP.NET Core中的Select選擇器驗證 171
16.4.1 HTML頁面中的選擇列表 171
16.4.2 使選擇列表成為必填 172
16.4.3 讓選擇列表成為真正的必需驗證 173
16.5 深入瞭解依賴註入3種服務的不同 174
16.5.1 IStudentRepository接口 174
16.5.2 Student類 175
16.5.3 MockStudentRepository倉儲服務 175
16.5.4 HomeController 176
16.5.5 創建學生信息 177
16.5.6 完善_ViewImports.cshtml 178
16.6 驗證依賴註入服務 179
16.6.1 AddSingleton()方法 179
16.6.2 AddScoped()方法 180
16.6.3 AddTransient()方法 181
16.6.4 Scoped服務、 Transient服務與Singleton服務 181
16.7 小結 182
第 17章 EntityFramework Core數據訪問與倉儲模式 183
17.1 為什麽要使用ORM 183
17.1.1 EF Core Code First模式 184
17.1.2 EF Core Database First模式 185
17.1.3 EF Core所支持的數據庫 185
17.2 單層Web應用和多層Web應用的區別 186
17.2.1 單層Web應用 186
17.2.2 多層Web應用程序——三層架構 187
17.2.3 多層Web應用程序——領域驅動設計架構 188
17.3 Microsoft.AspNetCore.App包 190
17.4 安裝Entity Framework Core 192
17.4.1 在類庫項目中安裝NuGet包 193
17.4.2 Entity Framework Core中的DbContext 194
17.4.3 在應用程序中使用DbContext 194
17.4.4 Entity Framework Core中的DbSet 195
17.5 在Entity Framework Core中使用SQL Server 195
17.5.1 AddDbContext()和AddDbContextPool()方法之間的區別 196
17.5.2 UseSqlServer()擴展方法 196
17.5.3 ASP.NET Core中的數據庫連接字符串 196
17.6 ASP.NET Core中的倉儲模式 197
17.6.1 倉儲模式簡介 197
17.6.2 倉儲模式中的接口 198
17.6.3 修改IStudentRepository接口 198
17.6.4 倉儲模式中的內存實現 199
17.6.5 Repository模式——SQL Server數據庫實現 201
17.6.6 選擇合適的倉儲實現模式 202
17.6.7 倉儲模式的優點 203
17.7 Entity Framework Core遷移功能 203
17.7.1 EF Core中的遷移 204
17.7.2 常用的Entity Framework Core遷移命令 205
17.7.3 在Entity Framework Core中創建遷移 205
17.7.4 在Entity Framework Core中更新數據庫 206
17.7.5 Entity Framework Core中的種子數據 207
17.7.6 如何啟用種子數據 207
17.7.7 更改現有的數據庫種子數據 209
17.7.8 DbContext類保持“乾凈” 210
17.8 在ASP.NET Core中同步領域模型與數據庫架構 211
17.8.1 給學生增加頭像字段 211
17.8.2 Migrations文件夾中的文件說明 212
17.8.3 _EFMigrationsHistory表的使用 212
17.8.4 如何刪除已應用的遷移記錄 212
17.8.5 刪除已應用於數據庫的遷移 213
17.9 小結 213
第 18章 學生頭像上傳與信息修改 214
18.1 修改Student模型類 215
18.1.1 視圖模型——StudentCreateViewModel 215
18.1.2 更新Create視圖中的代碼 216
18.1.3 更新Create()操作方法的代碼 219
18.1.4 學生詳情視圖頁面代碼 220
18.1.5 學生列表視圖頁面代碼 221
18.2 在ASP.NET Core MVC中完成上傳多個文件 222
18.2.1 StudentCreateViewModel文件 223
18.2.2 更新Create視圖的代碼 223
18.2.3 修改Create()操作方法 226
18.3 ASP.NET Core中的學生編輯視圖 228
18.3.1 導航到編輯視圖 228
18.3.2 編輯視圖模型 229
18.3.3 Edit() 操作方法 230
18.3.4 編輯視圖頁面 230
18.3.5 完成HttpPost的Edit()操作方法 232
18.4 枚舉的擴展方法實現 235
18.5 小結 237
第 19章 404錯誤頁與異常攔截 238
19.1 HTTP狀態碼中的4××和5×× 238
19.1.1 ASP.NET Core中的404錯誤 239
19.1.2 404錯誤信息的視圖代碼 239
19.2 統一處理ASP.NET Core中的404錯誤 240
19.2.1 404錯誤的類型 241
19.2.2 ASP.NET Core中的404錯誤示例 241
19.3 處理失敗的HTTP狀態碼 242
19.3.1 UseStatusCodePages中間件 242
19.3.2 UseStatusCodePagesWithRedirects中間件 243
19.3.3 添加ErrorController 244
19.3.4 添加NotFound視圖 245
19.4 UseStatusCodePagesWithRedirects與UseStatusCodePagesWithReExecute 245
19.4.1 UseStatusCodePagesWithRedirects中間件說明 246
19.4.2 UseStatusCodePagesWithRedirects請求處理流程 246
19.4.3 使用UseStatusCodePagesWithReExecute請求處理流程 247
19.5 ASP.NET Core中的全局異常處理 249
19.5.1 ASP.NET Core中的UseDeveloperExceptionPage中間件 249
19.5.2 ASP.NET Core中的非開發環境異常信息 250
19.5.3 ASP.NET Core中的異常處理 251
19.5.4 調整Edit()方法中的錯誤視圖 253
19.6 小結 255
第 20章 ASP.NET Core中的日誌記錄 256
20.1 ASP.NET Core中的默認日誌 256
20.2 ASP.NET Core中的日誌記錄提供程序 257
20.2.1 ASP.NET Core內置日誌記錄提供程序 257
20.2.2 ASP.NET Core的第三方日誌記錄提供程序 258
20.2.3 ASP.NET Core中默認的日誌記錄提供程序 258
20.2.4 appsettings.json文件中的LogLevel 259
20.3 在ASP.NET Core中實現記錄異常信息 261
20.3.1 Error和NotFound視圖修改 262
20.3.2 在ASP.NET Core中記錄異常信息 263
20.3.3 在ASP.NET Core中使用NLog記錄信息到文件中 267
20.3.4 在ASP.NET Core中使用NLog 267
20.4 在ASP.NET Core中LogLevel配置及過濾日誌信息 270
20.4.1 日誌等級LogLevel枚舉 270
20.4.2 ILogger方法 271
20.4.3 在ASP.NET Core中使用日誌過濾 272
20.4.4 按日誌類別(Log Category)和日誌記錄提供程序進行日誌篩選 275
20.4.5 特定環境變量中appsettings.json文件的LogLevel配置 277
20.5 小結 277
第三部分
第 21章 從零開始學ASP.NET Core Identity框架 280
21.1 ASP.NET Core Identity介紹 280
21.2 使用ASP.NET Core Identity註冊新用戶 283
21.2.1 RegisterViewModel視圖模型 284
21.2.2 賬戶控制器 284
21.2.3 註冊視圖中的代碼 285
21.2.4 添加註冊按鈕 286
21.3 UserManager和SignInManager服務 286
21.3.1 ASP.NET Core Identity中對密碼復雜度的處理 288
21.3.2 ASP.NET Core Identity密碼默認設置 289
21.3.3 覆蓋ASP.NET Core身份中的密碼默認設置 290
21.3.4 修改中文提示的錯誤信息 291
21.4 登錄狀態及註銷功能的實現 294
21.5 ASP.NET Core Identity中的登錄功能實現 295
21.5.1 LoginViewModel登錄視圖模型 295
21.5.2 登錄視圖的代碼 296
21.5.3 AccountController中的Login()操作方法 297
21.5.4 會話Cookie與持久性Cookie 298
21.6 小結 299
第 22章 授權與驗證的關系 300
22.1 ASP.NET Core中的Authorize屬性 300
22.1.1 Authorize屬性示例 300
22.1.2 ASP.NET Core中的AllowAnonymous屬性 301
22.1.3 全局應用Authorize屬性 302
22.2 登錄後重定向到指定URL 303
22.2.1 ASP.NET Core中的ReturnUrl 303
22.2.2 ReturnUrl查詢字符串示例 303
22.2.3 登錄後重定向到ReturnUrl 304
22.3 開放式重定向攻擊 305
22.3.1 什麽是開放式重定向漏洞 305
22.3.2 開放式重定向漏洞示例 305
22.4 ASP.NET Core中的客戶端驗證 307
22.4.1 服務器端驗證示例 307
22.4.2 客戶端驗證 308
22.4.3 什麽是客戶端隱式驗證 310
22.4.4 客戶端驗證如何在ASP.NET Core中工作 311
22.4.5 隱式驗證在ASP.NET Core中失效 312
22.5 在ASP.NET Core中進行遠程驗證 312
22.5.1 遠程驗證示例 313
22.5.2 ASP.NET Core遠程屬性 314
22.5.3 ASP.NET Core Ajax失效 315
22.6 ASP.NET Core中的自定義驗證屬性 315
22.6.1 自定義驗證屬性示例 315
22.6.2 在ASP.NET Core中使用自定義驗證屬性 316
22.7 小結 317
第 23章 角色管理與用戶擴展 318
23.1 擴展IdentityUser類 319
23.1.1 修改AppDbContext中的參數 321
23.1.2 生成新遷移記錄向AspNetUsers表中添加字段 321
23.1.3 在AspNetUsers表中保存自定義數據 322
23.1.4 AccountController類中Register()操作方法的修改 323
23.1.5 AllowAnonymous匿名屬性的使用 324
23.2 ASP.NET Core中的角色管理 324
23.2.1 ASP.NET Core中的RoleManager 324
23.2.2 在AdminController中添加創建新角色的代碼 325
23.2.3 創建角色視圖模型 326
23.2.4 創建角色視圖 326
23.3 在ASP.NET Core中顯示所有角色列表 328
23.4 編輯ASP.NET Core中的角色 331
23.4.1 編輯角色視圖模型 332
23.4.2 編輯角色操作方法 333
23.4.3 編輯角色視圖 335
23.5 角色管理中的用戶關聯關系 338
23.5.1 Identity中的AspNetUserRoles數據庫表關聯關系 339
23.5.2 EditUsersInRole的HttpGet操作方法 339
23.5.3 EditUsersInRole的HttpPost操作方法 340
23.5.4 EditUsersInRole視圖 341
23.6 小結 343
第 24章 角色授權與用戶管理 344
24.1 基於角色的授權 344
24.1.1 授權屬性的多個實例 345
24.1.2 基於角色授權的控制器操作方法 345
24.2 添加授權中間件UseAuthorization 346
24.3 在菜單欄上顯示或隱藏管理 347
24.4 ASP.NET Core Identity中的拒絕訪問功能 348
24.4.1 AccessDenied()操作方法 348
24.4.2 AccessDenied視圖代碼 349
24.5 獲取Identity中的用戶列表 349
24.5.1 UserManager服務的用戶訪問 350
24.5.2 ASP.NET Core列表用戶視圖 351
24.5.3 管理導航菜單 353
24.5.4 修改Register()方法 354
24.5.5 下拉菜單功能失效 355
24.6 編輯Identity中的用戶 355
24.6.1 編輯用戶視圖 355
24.6.2 EditUser()的操作方法 356
24.6.3 EditUser視圖文件 358
24.7 NotFound視圖異常 360
24.8 Identity中刪除的用戶功能 362
24.8.1 使用GET請求刪除數據 362
24.8.2 使用POST請求刪除數據 362
24.8.3 DeleteUser()方法 363
24.9 ASP.NET Core中的確認刪除功能 364
24.9.1 瀏覽器確認對話框 364
24.9.2 是和否刪除按鈕 364
24.9.3 將confirmDelete()方法添加到視圖中 366
24.10 刪除ASP.NET CoreIdentity中的角色 367
24.11 小結 369
第 25章 EF Core中的數據完整性約束 370
25.1 EF Core中的數據完整性約束 370
25.2 優化生產環境中的自定義錯誤視圖 374
25.2.1 ErrorController類 376
25.2.2 優化Error.cshtml 376
25.3 小結 378
第 26章 ASP.NET Core中的聲明授權 379
26.1 Identity中的用戶角色 379
26.1.1 視圖模型 380
26.1.2 ManageUserRoles()方法 380
26.1.3 ManageUserRoles視圖文件 382
26.2 啟用MARS與模型綁定失效 383
26.2.1 為什麽不使用foreach 384
26.2.2 for循環與foreach循環的異同點 387
26.3 聲明授權 388
26.3.1 ClaimsStore與UserClaimsViewModel類 388
26.3.2 ManageUserClaims()操作方法 389
26.3.3 ManageUserClaims視圖文件 391
26.4 小結 393
第 27章 RBAC與CABC 394
27.1 RBAC 394
27.2 CBAC 395
27.3 角色與策略的結合 396
27.4 在MVC視圖中進行角色與聲明授權 397
27.5 AccessDenied視圖的路由配置修改 399
27.6 策略授權中的ClaimType和ClaimValue 402
27.7 使用委托創建自定義策略授權 404
27.7.1 自定義復雜授權需求 406
27.7.2 自定義授權需求和處理程序 407
27.7.3 自定義需求的授權處理程序示例 408
27.7.4 多個自定義授權處理程序 411
27.8 小結 413
第 28章 Identity的賬戶中心的設計 414
28.1 第三方登錄身份提供商 414
28.1.1 第三方登錄身份提供商如何在ASP.NET Core中工作 415
28.1.2 創建Azure OAuth憑據--——客戶端ID和客戶端密鑰 416
28.1.3 在ASP.NET Core中啟用Microsoft身份驗證 418
28.1.4 集成GitHub身份驗證登錄 425
28.2 用戶機密 429
28.3 驗證賬戶信息安全 430
28.3.1 驗證電子郵箱的好處 431
28.3.2 阻止登錄未驗證的用戶登錄 431
28.3.3 電子郵箱確認令牌 435
28.3.4 第三方登錄的電子郵箱確認令牌 439
28.3.5 激活用戶郵箱 442
28.4 忘記密碼功能 444
28.5 重置密碼功能 446
28.6 小結 449
第 29章 解析部分ASP.NET Core Identity源代碼 450
29.1 解析ASP.NET Core Identity中Token的生成與驗證 450
29.2 自定義令牌類型及令牌有效期 454
29.3 ASP.NET Core中Data Protection的加密和解密示例 456
29.4 在ASP.NET Core中添加更改密碼功能 461
29.5 為第三方賬戶添加密碼 464
29.6 ASP.NET Core中的賬戶鎖定 468
29.7 小結 472
第四部分
第30章 架構 474
30.1 架構簡介 474
30.2 學校管理系統架構設計 475
30.3 EntityFramework Core中的實體關系 476
30.4 當前架構 480
30.5 小結 481
第31章 倉儲模式的最佳實踐 482
31.1 泛型倉儲的實現 482
31.2 異步編碼與同步編碼 483
31.3 IRepository接口的設計實現 484
31.4 RepositoryBase倉儲代碼的實現 489
31.5 小結 495
第32章 重構學生管理功能 496
32.1 修改HomeController中的代碼 496
32.2 學生列表排序功能 505
32.3 模糊查詢 507
32.4 一個簡單分頁的實現 509
32.5 小結 514
第33章 課程列表與分組統計功能 515
33.1 泛型分頁 515
33.2 遷移數據信息 521
33.3 課程列表 526
33.4 分部視圖 530
33.5 學生統計信息 532
33.6 Razor條件運行時編譯 534
33.7 小結 535
第34章 復雜數據類型及自動依賴註入 536
34.1 創建相關實體信息 537
34.1.1 修改Course實體信息 538
34.1.2 創建學院與調整學生課程信息 539
34.2 更新數據庫上下文及初始化內容 542
34.3 服務之間的自動註冊 552
34.4 小結 555
第35章 課程與教師的CRUD 556
35.1 EF Core中預加載的使用 556
35.2 較為復雜的預加載的使用 558
35.3 編輯課程功能 569
35.3.1 編輯課程信息 572
35.3.2 課程信息的詳情頁 575
35.3.3 刪除課程信息 577
35.4 編輯教師功能 578
35.4.1 添加教師信息 583
35.4.2 刪除教師信息 586
35.5 優化目錄結構 587
35.6 小結 588
第36章 處理並發沖突 589
36.1 並發沖突 589
36.1.1 悲觀並發(悲觀鎖) 590
36.1.2 樂觀並發(樂觀鎖) 591
36.2 添加Department的相關類 591
36.2.1 添加DepartmentsService 592
36.2.2 學院列表功能 593
36.2.3 添加詳情視圖 597
36.2.4 編輯學院信息功能 602
36.3 EF Core中的並發控制 605
36.4 小結 609
第37章 EF Core中的繼承與原生SQL語句使用 610
37.1 繼承 610
37.1.1 實現TPH繼承 611
37.1.2 執行數據庫遷移 613
37.2 執行原生SQL語句 614
37.2.1 DbSet.FromSqlRaw的使用 614
37.2.2 Database.ExecuteSqlComma的使用 615
37.2.3 執行原生SQL語句實現更新 616
37.3 小結 619
第38章 EF Core 中的數據加載與關系映射 620
38.1 EF Core中的數據加載 620
38.1.1 顯式加載 620
38.1.2 延遲加載 621
38.1.3 3種加載形式的性能區別 623
38.2 Fluent API與數據註釋 624
38.3 Entity Framework Core中的Code First關系映射約定 625
38.3.1 一對一關聯關系 626
38.3.2 一對多關聯關系 627
38.3.3 多對多關聯關系 631
38.4 小結 632
第五部分
第39章 ASP.NET Core中的Web API 634
39.1 IoT與RESTful服務 634
39.2 添加Web API服務 635
39.3 安裝Postman並調試Web API服務 639
39.3.1 測試POST請求 639
39.3.2 測試GET請求 640
39.3.3 測試PutTodoItem()方法 642
39.3.4 測試DeleteTodoItem()方法 644
39.3.5 404和400異常 644
39.4 圖形可視化的Web API幫助頁 646
39.4.1 Swagger/OpenAPI 646
39.4.2 Swashbuckle.AspNetCore入門 646
39.4.3 添加並配置Swagger中間件 647
39.4.4 獲取swagger.json失敗 648
39.4.5 調試Swagger UI 650
39.4.6 調用SwaggerGen API 654
39.5 小結 657
第40章 實踐多層架構體系 658
40.1 領域驅動設計的分層結構 658
40.2 重構MockSchoolManagement項目 659
40.2.1 添加所需類庫 661
40.2.2 添加依賴引用關系 662
40.3 遷移各類庫 663
40.3.1 各個項目文件中的引用 664
40.3.2 類庫效果圖 665
40.3.3 多程序集的依賴註入 667
40.3.4 重新生成遷移記錄及生成SQL腳本 668
40.4 小結 669
第41章 部署與發布 670
41.1 部署至IIS 670
41.1.1 IIS的安裝和配置 670
41.1.2 安裝ASP.NET Core托管模塊 672
41.1.3 啟用Web Deploy 672
41.1.4 創建IIS站點 675
41.1.5 使用Visual Studio將ASP.NET Core發布到IIS站點 676
41.2 部署至Ubuntu 678
41.2.1 Ubuntu中安裝.NET Core 679
41.2.2 安裝Nginx 679
41.2.3 編譯與發布 680
41.3 在Docker中調試運行ASP.NET Core 682
41.3.1 安裝Docker 682
41.3.2 添加Dockerfile文件 683
41.4 雲原生Azure Web App 685
41.5 小結 689
第42章 ASP.NET Core 2.2到ASP. NET Core 3.1的遷移指南 690
42.1 升級至ASP.NET Core 3.1 690
42.1.1 修改項目啟動 692
42.1.2 修改Startup 693
42.2 遷移升級後的看法 693
42.3 Visual Studio 2019插件推薦 694
42.4 小結 696


作者介紹


梁桐铭,微软最有价值专家、Microsoft AI Open Hack教练、Microsoft Tech Summit 2018讲师,52ABP开源框架作者。2015年开始在国内推广ASP.NET Boilerplate Project开源框架。拥有多年开发经验与技术团队管理经验,熟悉互联网及电商业。负责过多个大型项目的开发和管理,擅长应用系统项目的规划设计、及企业解决方案的设计。




相關書籍

CLR via C#, 4/e (Paperback)

作者 Jeffrey Richter

2020-09-01

Building Maintainable Software, Java Edition: Ten Guidelines for Future-Proof Code (Paperback)

作者 Joost Visser Sylvan Rigal Rob van der Leek Pascal van Eck Gijs Wijnholds

2020-09-01

Java 9 Revealed: For Early Adoption and Migration

作者 Kishori Sharan

2020-09-01