關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
深入淺出 ASP.NET Core
本書(shū)是一本系統(tǒng)地介紹ASP.NET Core、Entity Framework Core以及ASP.NET Core Identity框架技術(shù)的入門(mén)圖書(shū),旨在幫助讀者循序漸進(jìn)地了解和掌握ASP.NET Core。本書(shū)使用ASP.NET Core從零開(kāi)始搭建一個(gè)實(shí)際的項(xiàng)目。從基本的控制臺(tái)應(yīng)用程序開(kāi)始,介紹ASP.NET Core基本的啟動(dòng)流程,涵蓋ASP.NET Core框架中各個(gè)技術(shù)的實(shí)際應(yīng)用。同時(shí),本書(shū)也會(huì)介紹一些ASP.NET Core的高級(jí)概念。在本書(shū)中,我們會(huì)開(kāi)發(fā)一個(gè)學(xué)校管理系統(tǒng),其中包含清晰的操作步驟和大量的實(shí)際代碼,以幫助讀者學(xué)以致用,將ASP.NET Core的知識(shí)運(yùn)用到實(shí)際的項(xiàng)目開(kāi)發(fā)當(dāng)中,最后我們會(huì)將開(kāi)發(fā)的項(xiàng)目部署到生產(chǎn)環(huán)境中。通過(guò)閱讀本書(shū),讀者將掌握使用ASP.NET Core開(kāi)發(fā)Web應(yīng)用程序的方法,并能夠在對(duì)新項(xiàng)目進(jìn)行技術(shù)選型時(shí)做出戰(zhàn)略決策。
本書(shū)適合有一定C# 編程經(jīng)驗(yàn)和HTML、JavaScript基礎(chǔ),并對(duì)ASP.NET Core感興趣的讀者閱讀,也可以作為高等院校相關(guān)專業(yè)的教學(xué)用書(shū)和培訓(xùn)學(xué)校的教材。
1.針對(duì).NET Core 3.1講解;
2.提供完整源代碼下載且代碼可復(fù)用;
3.本書(shū)附送免費(fèi)視頻資源,供讀者配合圖書(shū)學(xué)習(xí);
4.本書(shū)針對(duì)一個(gè)完整項(xiàng)目進(jìn)行開(kāi)發(fā),而不是只有零散的代碼段;
5.案例豐富、實(shí)用,采用了流行框架中的設(shè)計(jì)模式及實(shí)用技術(shù);
6.具有完整的權(quán)限功能,統(tǒng)一處理攔截異常、錯(cuò)誤頁(yè)面及日志信息。
經(jīng)過(guò)幾年的發(fā)展,ASP.NET Core 已趨于穩(wěn)定,社區(qū)生態(tài)比較完善。在技術(shù)日新月異的今天,我們需要不斷學(xué)習(xí),并在學(xué)習(xí)中不斷成長(zhǎng)。本書(shū)由淺入深地講解 ASP.NET Core,如果你想通過(guò)學(xué)習(xí) ASP.NET Core 來(lái)獲得更多的機(jī)會(huì),那么我推薦本書(shū),在學(xué)習(xí) ASP.NET Core 的過(guò)程中它可以給予我們啟發(fā)和幫助。
——微軟MVP 李志強(qiáng) (曉晨master)
ASP.NET Core已成為微軟跨平臺(tái)開(kāi)發(fā)的利器。本書(shū)基于ASP.NET Core 3.1版本,由淺入深地介紹了如何從頭開(kāi)始構(gòu)建ASP.NET Core應(yīng)用,內(nèi)容詳實(shí),通俗易懂,非常適合.NET開(kāi)發(fā)者學(xué)習(xí)參考。
—— 微軟MVP 閆曉迪
我一直認(rèn)為微軟官方文檔是入門(mén)學(xué)習(xí)最好的資料,但在閱讀了梁桐銘的書(shū)稿后,我認(rèn)為他寫(xiě)的這本書(shū)更加適合ASP.NET Core初學(xué)者參考閱讀,從對(duì).NET的歷史回顧到對(duì)ASP.NET Core各組件由淺入深的講解,都是他學(xué)習(xí)心得的真心傳授。
——深圳市友浩達(dá)科技有限公司 CEO、微軟MVP 張善友
即便ASP.NET Core從2016年首發(fā)到現(xiàn)在已經(jīng)過(guò)去4年,但其在開(kāi)發(fā)者市場(chǎng)中的占比仍然不高。一方面是因?yàn)锳SP.NET Core技術(shù)的主要陣地其實(shí)依然是以企業(yè)信息化為主的傳統(tǒng)企業(yè)級(jí)應(yīng)用層面,考慮到成本等綜合因素,這些企業(yè)無(wú)法適時(shí)地更新自己的技術(shù);另一方面是因?yàn)榕囵B(yǎng)能夠熟練駕馭ASP.NET Core技術(shù)的年輕開(kāi)發(fā)者的速度,趕不上企業(yè)飛速發(fā)展的需要。即便官方文檔很齊全,但系統(tǒng)教程的缺乏,使開(kāi)發(fā)者或企業(yè)無(wú)法從ASP.NET Core的社區(qū)資源中受益。這本書(shū)有望成為初級(jí)和中級(jí)ASP.NET Core開(kāi)發(fā)者的精神食糧。根據(jù)作者介紹的詳細(xì)步驟,開(kāi)發(fā)者能夠快速成長(zhǎng)為合格的新一代ASP.NET Core開(kāi)發(fā)者。本書(shū)作者是ASP.NET Core技術(shù)的先行者,早年在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)等諸多社區(qū)貢獻(xiàn)了大量學(xué)習(xí)資源,也在網(wǎng)上開(kāi)設(shè)了ASP.NET Core在線課程,而這本書(shū)也是他過(guò)去若干年經(jīng)驗(yàn)積累的結(jié)晶。
——深圳敢為軟件研發(fā)負(fù)責(zé)人、長(zhǎng)沙.NET技術(shù)社區(qū)組織者 鄒溪源
作者在本書(shū)的課程管理系統(tǒng)中融入了他積累多年的 ASP.NET Core 實(shí)踐經(jīng)驗(yàn),以此為主線層層深入,對(duì) ASP.NET Core 的各項(xiàng)重要功能進(jìn)行了充分的講解和演示。同時(shí),書(shū)中還加入了對(duì)部分框架源碼的分析解讀,能更好地幫助我們掌握程序的編寫(xiě)技巧。相信無(wú)論你是初學(xué)者,還是具有一定基礎(chǔ)的開(kāi)發(fā)者,本書(shū)都是一本可以讓你全面學(xué)習(xí) ASP.NET Core,并且快速運(yùn)用到實(shí)踐中的佳作!
——盛派網(wǎng)絡(luò)創(chuàng)始人、微軟 RD / MVP 蘇震巍
梁桐銘,微軟最有價(jià)值專家、Microsoft AI Open Hack教練、Microsoft Tech Summit 2018講師,52ABP開(kāi)源框架作者。2015年開(kāi)始在國(guó)內(nèi)推廣ASP.NET Boilerplate Project開(kāi)源框架。擁有多年開(kāi)發(fā)經(jīng)驗(yàn)與技術(shù)團(tuán)隊(duì)管理經(jīng)驗(yàn),熟悉互聯(lián)網(wǎng)及電商業(yè)。負(fù)責(zé)過(guò)多個(gè)大型項(xiàng)目的開(kāi)發(fā)和管理,擅長(zhǎng)應(yīng)用系統(tǒng)項(xiàng)目的規(guī)劃設(shè)計(jì)、及企業(yè)解決方案的設(shè)計(jì)。
第 一部分
第 1章 編程語(yǔ)言和 .NET的關(guān)系 2
1.1 編程語(yǔ)言 2
1.2 編程語(yǔ)言中的C#、 F#和VB.NET 2
1.3 C#與.NET 3
1.4 小結(jié) 3
第 2章 .NET平臺(tái) 4
2.1 回顧.NET發(fā)展歷史 4
2.1.1 .NET Framework 4
2.1.2 .NET Framework與Java 5
2.1.3 .NET的跨平臺(tái)之路 5
2.2 Mono神奇的跨平臺(tái)解決方案 6
2.3 .NET Standard 6
2.4 .NET Core 7
2.4.1 .NET Core的特點(diǎn) 7
2.4.2 .NET Core 3.1 8
2.5 .NET Core與其他平臺(tái) 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的發(fā)展歷程 9
2.7 ASP.NET Core的未來(lái)發(fā)展 9
2.8 小結(jié) 10
第3章 .NET 5的統(tǒng)一整合方案 11
3.1 進(jìn)化中的.NET 11
3.2 .NET 5 (.NET Core vNext) 12
3.3 .NET Core實(shí)現(xiàn)真正的統(tǒng)一開(kāi)發(fā)平臺(tái) 13
3.4 小結(jié) 14
第4章 創(chuàng)建ASP.NET Core項(xiàng)目 15
4.1 ASP.NET Core 15
4.2 ASP.NET Core的特性 15
4.3 配置計(jì)算機(jī)的開(kāi)發(fā)環(huán)境 17
4.3.1 下載并安裝Visual Studio 2019 17
4.3.2 下載并安裝.NET Core SDK 18
4.4 創(chuàng)建ASP.NET Core Web程序 18
4.5 內(nèi)置的ASP.NET Core模板說(shuō)明 20
4.6 小結(jié) 21
第5章 ASP.NET Core項(xiàng)目啟動(dòng)流程 23
5.1 ASP.NET Core項(xiàng)目文件 23
5.2 ASP.NET Core項(xiàng)目的入口 25
5.3 ASP.NET Core中的進(jìn)程內(nèi)與進(jìn)程外托管模型 26
5.3.1 進(jìn)程內(nèi)托管 27
5.3.2 Kestrel 28
5.3.3 CLI 28
5.4 ASP.NET Core進(jìn)程外托管 29
5.5 探討幾個(gè)問(wèn)題 30
5.6 小結(jié) 31
第6章 ASP.NET Core中的配置文件 33
6.1 啟動(dòng)配置信息 33
6.2 通過(guò)GUI來(lái)設(shè)置launchSettings文件 35
6.3 ASP.NET Core appsettings.json文件 36
6.3.1 訪問(wèn)配置信息 37
6.3.2 appsettings.json 39
6.3.3 用戶機(jī)密 39
6.3.4 環(huán)境變量 41
6.3.5 命令行參數(shù) 41
6.4 ASP.NET Core IConfiguration服務(wù)與依賴注入 42
6.5 小結(jié) 44
第7章 ASP.NET Core中的中間件及其工作原理 45
7.1 中間件 45
7.2 中間件在ASP.NET Core中的工作原理 47
7.3 配置ASP.NET Core請(qǐng)求處理管道 48
7.4 Configure()代碼解析 49
7.4.1 中間件掌握測(cè)試 49
7.4.2 中間件傳遞 50
7.4.3 實(shí)踐中間件的工作流程 50
7.5 小結(jié) 52
第8章 ASP.NET Core中的靜態(tài)文件中間件 54
8.1 添加靜態(tài)文件中間件 54
8.2 支持默認(rèn)文件 55
8.3 自定義默認(rèn)文件 56
8.4 UseFileServer中間件 56
8.5 小結(jié) 57
第9章 ASP.NET Core開(kāi)發(fā)人員異常頁(yè)面 58
9.1 UseDeveloperExceptionPage中間件 58
9.2 自定義UseDeveloperExceptionPage中間件 60
9.3 UseDeveloperExceptionPage中間件如何工作 60
9.4 ASP.NET Core中的環(huán)境變量配置 61
9.5 配置ASPNETCORE_ENVIRONMENT變量 62
9.6 IWebHostEnvironment服務(wù)中的常用方法 64
9.7 小結(jié) 65
第二部分
第 10章 詳解ASP.NET Core MVC的設(shè)計(jì)模式 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 小結(jié) 77
第 11章 依賴注入與Student模型 78
11.1 依賴注入 78
11.2 詳細(xì)了解ASP.NET Core中的依賴注入 80
11.3 使用依賴注入注冊(cè)服務(wù) 81
11.4 小結(jié) 83
第 12章 從Controller傳遞內(nèi)容協(xié)商數(shù)據(jù)到View 84
12.1 Controller請(qǐng)求及相應(yīng)流程說(shuō)明 84
12.1.1 從Controller中返回JSON數(shù)據(jù) 85
12.1.2 安裝Fiddler 86
12.2 在Controller中實(shí)現(xiàn)內(nèi)容協(xié)商 86
12.3 從Controller返回View 89
12.3.1 MVC中的View 89
12.3.2 視圖文件夾結(jié)構(gòu) 90
12.3.3 視圖發(fā)現(xiàn) 90
12.3.4 View()重載方法 93
12.4 自定義視圖發(fā)現(xiàn) 93
12.4.1 指定視圖文件路徑 93
12.4.2 相對(duì)視圖文件路徑 94
12.4.3 其他View()重載方法 94
12.5 從Controller傳遞數(shù)據(jù)到View 95
12.5.1 數(shù)據(jù)從Controller傳遞到View的方法 95
12.5.2 使用ViewData將數(shù)據(jù)從Controller傳遞到View 95
12.5.3 使用ViewBag將數(shù)據(jù)從Controller傳遞到View 97
12.5.4 ViewData和ViewBag的對(duì)比 98
12.5.5 在ASP.NET Core MVC中創(chuàng)建一個(gè)強(qiáng)類型視圖 98
12.6 小結(jié) 100
第 13章 完善MVC框架內(nèi)容 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中實(shí)現(xiàn)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 創(chuàng)建布局視圖 109
13.3.3 使用布局視圖 109
13.4 布局頁(yè)面中的節(jié)點(diǎn) 110
13.4.1 布局頁(yè)面示例 110
13.4.2 渲染節(jié)點(diǎn) 111
13.4.3 使布局部分可選 111
13.4.4 節(jié)點(diǎn)的使用 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 邏輯判斷調(diào)用布局視圖 114
13.5.4 修改視圖 114
13.6 ASP.NET Core MVC中的_ViewImports.cshtml文件 116
13.7 小結(jié) 117
第 14章 ASP.NET Core MVC中的路由 118
14.1 ASP.NET Core MVC中的默認(rèn)路由 119
14.2 UseMvcWithDefaultRoute()方法中的代碼 120
14.3 ASP.NET Core MVC中的屬性路由 122
14.3.1 屬性路由示例 123
14.3.2 屬性路由參數(shù) 123
14.3.3 屬性路由可選參數(shù) 124
14.3.4 控制器和操作方法名稱 125
14.3.5 屬性路由支持多層 125
14.3.6 在屬性路由中自定義路由 128
14.3.7 常規(guī)路由與屬性路由對(duì)比 129
14.4 ASP.NET Core中新增的路由中間件 129
14.4.1 路由中間件UseRouting 130
14.4.2 路由中間件UseEndpoints 131
14.5 LibMan輕量級(jí)包管理器 133
14.5.1 使用LibMan安裝Bootstrap 133
14.5.2 libman.json文件 134
14.5.3 清理和還原客戶端庫(kù) 134
14.5.4 卸載或更新客戶端庫(kù) 134
14.5.5 libman.json文件說(shuō)明 135
14.5.6 在網(wǎng)站中自定義CSS樣式表 136
14.6 在ASP.NET Core應(yīng)用程序中使用Bootstrap 136
14.6.1 Details.cshtml視圖優(yōu)化 137
14.6.2 Index.cshtml視圖優(yōu)化 137
14.7 小結(jié) 139
第 15章 ASP.NET Core中的TagHelper 140
15.1 導(dǎo)入內(nèi)置TagHelper 140
15.1.1 使用TagHelper生成Link鏈接 140
15.1.2 TagHelper中的Link標(biāo)簽 141
15.2 為什么要使用TagHelper 141
15.3 Image TagHelper 144
15.3.1 瀏覽器緩存 145
15.3.2 禁用瀏覽器緩存 145
15.3.3 HTTP狀態(tài)碼中的200與302 146
15.3.4 ASP.NET Core中的Image TagHelper 146
15.3.5 驗(yàn)證Image TagHelper 147
15.4 ASP.NET Core中的Environment TagHelper 148
15.4.1 設(shè)置應(yīng)用程序環(huán)境的名稱 148
15.4.2 如果CDN “掛了”怎么辦 149
15.5 使用Bootstrap給項(xiàng)目添加導(dǎo)航菜單 150
15.6 Form TagHelpers提交學(xué)生信息 153
15.6.1 場(chǎng)景描述 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優(yōu)化后的Create.cshtml的代碼 158
15.7 小結(jié) 159
第 16章 ASP.NET Core中的模型綁定與模型驗(yàn)證 160
16.1 ASP.NET Core中模型綁定的簡(jiǎn)單例子 160
16.2 在IStudentRepository接口中添加Add() 方法 162
16.2.1 在MockStudentRepository類中實(shí)現(xiàn)Add() 方法 163
16.2.2 HttpGet與HttpPost 163
16.2.3 運(yùn)行結(jié)果 165
16.3 ASP.NET Core中的模型驗(yàn)證 166
16.3.1 模型驗(yàn)證示例 166
16.3.2 ModelState.IsValid屬性驗(yàn)證 168
16.3.3 在視圖中顯示模型驗(yàn)證錯(cuò)誤 168
16.3.4 自定義模型驗(yàn)證錯(cuò)誤消息 169
16.3.5 ASP.NET Core內(nèi)置模型驗(yàn)證屬性 169
16.3.6 顯示屬性 169
16.3.7 使用多個(gè)模型驗(yàn)證屬性 170
16.3.8 自定義模型驗(yàn)證錯(cuò)誤的顏色 170
16.4 ASP.NET Core中的Select選擇器驗(yàn)證 171
16.4.1 HTML頁(yè)面中的選擇列表 171
16.4.2 使選擇列表成為必填 172
16.4.3 讓選擇列表成為真正的必需驗(yàn)證 173
16.5 深入了解依賴注入3種服務(wù)的不同 174
16.5.1 IStudentRepository接口 174
16.5.2 Student類 175
16.5.3 MockStudentRepository倉(cāng)儲(chǔ)服務(wù) 175
16.5.4 HomeController 176
16.5.5 創(chuàng)建學(xué)生信息 177
16.5.6 完善_ViewImports.cshtml 178
16.6 驗(yàn)證依賴注入服務(wù) 179
16.6.1 AddSingleton()方法 179
16.6.2 AddScoped()方法 180
16.6.3 AddTransient()方法 181
16.6.4 Scoped服務(wù)、 Transient服務(wù)與Singleton服務(wù) 181
16.7 小結(jié) 182
第 17章 EntityFramework Core數(shù)據(jù)訪問(wèn)與倉(cāng)儲(chǔ)模式 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所支持的數(shù)據(jù)庫(kù) 185
17.2 單層Web應(yīng)用和多層Web應(yīng)用的區(qū)別 186
17.2.1 單層Web應(yīng)用 186
17.2.2 多層Web應(yīng)用程序——三層架構(gòu) 187
17.2.3 多層Web應(yīng)用程序——領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)架構(gòu) 188
17.3 Microsoft.AspNetCore.App包 190
17.4 安裝Entity Framework Core 192
17.4.1 在類庫(kù)項(xiàng)目中安裝NuGet包 193
17.4.2 Entity Framework Core中的DbContext 194
17.4.3 在應(yīng)用程序中使用DbContext 194
17.4.4 Entity Framework Core中的DbSet 195
17.5 在Entity Framework Core中使用SQL Server 195
17.5.1 AddDbContext()和AddDbContextPool()方法之間的區(qū)別 196
17.5.2 UseSqlServer()擴(kuò)展方法 196
17.5.3 ASP.NET Core中的數(shù)據(jù)庫(kù)連接字符串 196
17.6 ASP.NET Core中的倉(cāng)儲(chǔ)模式 197
17.6.1 倉(cāng)儲(chǔ)模式簡(jiǎn)介 197
17.6.2 倉(cāng)儲(chǔ)模式中的接口 198
17.6.3 修改IStudentRepository接口 198
17.6.4 倉(cāng)儲(chǔ)模式中的內(nèi)存實(shí)現(xiàn) 199
17.6.5 Repository模式——SQL Server數(shù)據(jù)庫(kù)實(shí)現(xiàn) 201
17.6.6 選擇合適的倉(cāng)儲(chǔ)實(shí)現(xiàn)模式 202
17.6.7 倉(cāng)儲(chǔ)模式的優(yōu)點(diǎn) 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中創(chuàng)建遷移 205
17.7.4 在Entity Framework Core中更新數(shù)據(jù)庫(kù) 206
17.7.5 Entity Framework Core中的種子數(shù)據(jù) 207
17.7.6 如何啟用種子數(shù)據(jù) 207
17.7.7 更改現(xiàn)有的數(shù)據(jù)庫(kù)種子數(shù)據(jù) 209
17.7.8 DbContext類保持“干凈” 210
17.8 在ASP.NET Core中同步領(lǐng)域模型與數(shù)據(jù)庫(kù)架構(gòu) 211
17.8.1 給學(xué)生增加頭像字段 211
17.8.2 Migrations文件夾中的文件說(shuō)明 212
17.8.3 _EFMigrationsHistory表的使用 212
17.8.4 如何刪除已應(yīng)用的遷移記錄 212
17.8.5 刪除已應(yīng)用于數(shù)據(jù)庫(kù)的遷移 213
17.9 小結(jié) 213
第 18章 學(xué)生頭像上傳與信息修改 214
18.1 修改Student模型類 215
18.1.1 視圖模型——StudentCreateViewModel 215
18.1.2 更新Create視圖中的代碼 216
18.1.3 更新Create()操作方法的代碼 219
18.1.4 學(xué)生詳情視圖頁(yè)面代碼 220
18.1.5 學(xué)生列表視圖頁(yè)面代碼 221
18.2 在ASP.NET Core MVC中完成上傳多個(gè)文件 222
18.2.1 StudentCreateViewModel文件 223
18.2.2 更新Create視圖的代碼 223
18.2.3 修改Create()操作方法 226
18.3 ASP.NET Core中的學(xué)生編輯視圖 228
18.3.1 導(dǎo)航到編輯視圖 228
18.3.2 編輯視圖模型 229
18.3.3 Edit() 操作方法 230
18.3.4 編輯視圖頁(yè)面 230
18.3.5 完成HttpPost的Edit()操作方法 232
18.4 枚舉的擴(kuò)展方法實(shí)現(xiàn) 235
18.5 小結(jié) 237
第 19章 404錯(cuò)誤頁(yè)與異常攔截 238
19.1 HTTP狀態(tài)碼中的4××和5×× 238
19.1.1 ASP.NET Core中的404錯(cuò)誤 239
19.1.2 404錯(cuò)誤信息的視圖代碼 239
19.2 統(tǒng)一處理ASP.NET Core中的404錯(cuò)誤 240
19.2.1 404錯(cuò)誤的類型 241
19.2.2 ASP.NET Core中的404錯(cuò)誤示例 241
19.3 處理失敗的HTTP狀態(tài)碼 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中間件說(shuō)明 246
19.4.2 UseStatusCodePagesWithRedirects請(qǐng)求處理流程 246
19.4.3 使用UseStatusCodePagesWithReExecute請(qǐng)求處理流程 247
19.5 ASP.NET Core中的全局異常處理 249
19.5.1 ASP.NET Core中的UseDeveloperExceptionPage中間件 249
19.5.2 ASP.NET Core中的非開(kāi)發(fā)環(huán)境異常信息 250
19.5.3 ASP.NET Core中的異常處理 251
19.5.4 調(diào)整Edit()方法中的錯(cuò)誤視圖 253
19.6 小結(jié) 255
第 20章 ASP.NET Core中的日志記錄 256
20.1 ASP.NET Core中的默認(rèn)日志 256
20.2 ASP.NET Core中的日志記錄提供程序 257
20.2.1 ASP.NET Core內(nèi)置日志記錄提供程序 257
20.2.2 ASP.NET Core的第三方日志記錄提供程序 258
20.2.3 ASP.NET Core中默認(rèn)的日志記錄提供程序 258
20.2.4 appsettings.json文件中的LogLevel 259
20.3 在ASP.NET Core中實(shí)現(xiàn)記錄異常信息 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配置及過(guò)濾日志信息 270
20.4.1 日志等級(jí)LogLevel枚舉 270
20.4.2 ILogger方法 271
20.4.3 在ASP.NET Core中使用日志過(guò)濾 272
20.4.4 按日志類別(Log Category)和日志記錄提供程序進(jìn)行日志篩選 275
20.4.5 特定環(huán)境變量中appsettings.json文件的LogLevel配置 277
20.5 小結(jié) 277
第三部分
第 21章 從零開(kāi)始學(xué)ASP.NET Core Identity框架 280
21.1 ASP.NET Core Identity介紹 280
21.2 使用ASP.NET Core Identity注冊(cè)新用戶 283
21.2.1 RegisterViewModel視圖模型 284
21.2.2 賬戶控制器 284
21.2.3 注冊(cè)視圖中的代碼 285
21.2.4 添加注冊(cè)按鈕 286
21.3 UserManager和SignInManager服務(wù) 286
21.3.1 ASP.NET Core Identity中對(duì)密碼復(fù)雜度的處理 288
21.3.2 ASP.NET Core Identity密碼默認(rèn)設(shè)置 289
21.3.3 覆蓋ASP.NET Core身份中的密碼默認(rèn)設(shè)置 290
21.3.4 修改中文提示的錯(cuò)誤信息 291
21.4 登錄狀態(tài)及注銷功能的實(shí)現(xiàn) 294
21.5 ASP.NET Core Identity中的登錄功能實(shí)現(xiàn) 295
21.5.1 LoginViewModel登錄視圖模型 295
21.5.2 登錄視圖的代碼 296
21.5.3 AccountController中的Login()操作方法 297
21.5.4 會(huì)話Cookie與持久性Cookie 298
21.6 小結(jié) 299
第 22章 授權(quán)與驗(yàn)證的關(guān)系 300
22.1 ASP.NET Core中的Authorize屬性 300
22.1.1 Authorize屬性示例 300
22.1.2 ASP.NET Core中的AllowAnonymous屬性 301
22.1.3 全局應(yīng)用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 開(kāi)放式重定向攻擊 305
22.3.1 什么是開(kāi)放式重定向漏洞 305
22.3.2 開(kāi)放式重定向漏洞示例 305
22.4 ASP.NET Core中的客戶端驗(yàn)證 307
22.4.1 服務(wù)器端驗(yàn)證示例 307
22.4.2 客戶端驗(yàn)證 308
22.4.3 什么是客戶端隱式驗(yàn)證 310
22.4.4 客戶端驗(yàn)證如何在ASP.NET Core中工作 311
22.4.5 隱式驗(yàn)證在ASP.NET Core中失效 312
22.5 在ASP.NET Core中進(jìn)行遠(yuǎn)程驗(yàn)證 312
22.5.1 遠(yuǎn)程驗(yàn)證示例 313
22.5.2 ASP.NET Core遠(yuǎn)程屬性 314
22.5.3 ASP.NET Core Ajax失效 315
22.6 ASP.NET Core中的自定義驗(yàn)證屬性 315
22.6.1 自定義驗(yàn)證屬性示例 315
22.6.2 在ASP.NET Core中使用自定義驗(yàn)證屬性 316
22.7 小結(jié) 317
第 23章 角色管理與用戶擴(kuò)展 318
23.1 擴(kuò)展IdentityUser類 319
23.1.1 修改AppDbContext中的參數(shù) 321
23.1.2 生成新遷移記錄向AspNetUsers表中添加字段 321
23.1.3 在AspNetUsers表中保存自定義數(shù)據(jù) 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中添加創(chuàng)建新角色的代碼 325
23.2.3 創(chuàng)建角色視圖模型 326
23.2.4 創(chuàng)建角色視圖 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 角色管理中的用戶關(guān)聯(lián)關(guān)系 338
23.5.1 Identity中的AspNetUserRoles數(shù)據(jù)庫(kù)表關(guān)聯(lián)關(guān)系 339
23.5.2 EditUsersInRole的HttpGet操作方法 339
23.5.3 EditUsersInRole的HttpPost操作方法 340
23.5.4 EditUsersInRole視圖 341
23.6 小結(jié) 343
第 24章 角色授權(quán)與用戶管理 344
24.1 基于角色的授權(quán) 344
24.1.1 授權(quán)屬性的多個(gè)實(shí)例 345
24.1.2 基于角色授權(quán)的控制器操作方法 345
24.2 添加授權(quán)中間件UseAuthorization 346
24.3 在菜單欄上顯示或隱藏管理 347
24.4 ASP.NET Core Identity中的拒絕訪問(wèn)功能 348
24.4.1 AccessDenied()操作方法 348
24.4.2 AccessDenied視圖代碼 349
24.5 獲取Identity中的用戶列表 349
24.5.1 UserManager服務(wù)的用戶訪問(wèn) 350
24.5.2 ASP.NET Core列表用戶視圖 351
24.5.3 管理導(dǎo)航菜單 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請(qǐng)求刪除數(shù)據(jù) 362
24.8.2 使用POST請(qǐng)求刪除數(shù)據(jù) 362
24.8.3 DeleteUser()方法 363
24.9 ASP.NET Core中的確認(rèn)刪除功能 364
24.9.1 瀏覽器確認(rèn)對(duì)話框 364
24.9.2 是和否刪除按鈕 364
24.9.3 將confirmDelete()方法添加到視圖中 366
24.10 刪除ASP.NET CoreIdentity中的角色 367
24.11 小結(jié) 369
第 25章 EF Core中的數(shù)據(jù)完整性約束 370
25.1 EF Core中的數(shù)據(jù)完整性約束 370
25.2 優(yōu)化生產(chǎn)環(huán)境中的自定義錯(cuò)誤視圖 374
25.2.1 ErrorController類 376
25.2.2 優(yōu)化Error.cshtml 376
25.3 小結(jié) 378
第 26章 ASP.NET Core中的聲明授權(quán) 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循環(huán)與foreach循環(huán)的異同點(diǎn) 387
26.3 聲明授權(quán) 388
26.3.1 ClaimsStore與UserClaimsViewModel類 388
26.3.2 ManageUserClaims()操作方法 389
26.3.3 ManageUserClaims視圖文件 391
26.4 小結(jié) 393
第 27章 RBAC與CABC 394
27.1 RBAC 394
27.2 CBAC 395
27.3 角色與策略的結(jié)合 396
27.4 在MVC視圖中進(jìn)行角色與聲明授權(quán) 397
27.5 AccessDenied視圖的路由配置修改 399
27.6 策略授權(quán)中的ClaimType和ClaimValue 402
27.7 使用委托創(chuàng)建自定義策略授權(quán) 404
27.7.1 自定義復(fù)雜授權(quán)需求 406
27.7.2 自定義授權(quán)需求和處理程序 407
27.7.3 自定義需求的授權(quán)處理程序示例 408
27.7.4 多個(gè)自定義授權(quán)處理程序 411
27.8 小結(jié) 413
第 28章 Identity的賬戶中心的設(shè)計(jì) 414
28.1 第三方登錄身份提供商 414
28.1.1 第三方登錄身份提供商如何在ASP.NET Core中工作 415
28.1.2 創(chuàng)建Azure OAuth憑據(jù)--——客戶端ID和客戶端密鑰 416
28.1.3 在ASP.NET Core中啟用Microsoft身份驗(yàn)證 418
28.1.4 集成GitHub身份驗(yàn)證登錄 425
28.2 用戶機(jī)密 429
28.3 驗(yàn)證賬戶信息安全 430
28.3.1 驗(yàn)證電子郵箱的好處 431
28.3.2 阻止登錄未驗(yàn)證的用戶登錄 431
28.3.3 電子郵箱確認(rèn)令牌 435
28.3.4 第三方登錄的電子郵箱確認(rèn)令牌 439
28.3.5 激活用戶郵箱 442
28.4 忘記密碼功能 444
28.5 重置密碼功能 446
28.6 小結(jié) 449
第 29章 解析部分ASP.NET Core Identity源代碼 450
29.1 解析ASP.NET Core Identity中Token的生成與驗(yàn)證 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 小結(jié) 472
第四部分
第30章 架構(gòu) 474
30.1 架構(gòu)簡(jiǎn)介 474
30.2 學(xué)校管理系統(tǒng)架構(gòu)設(shè)計(jì) 475
30.3 EntityFramework Core中的實(shí)體關(guān)系 476
30.4 當(dāng)前架構(gòu) 480
30.5 小結(jié) 481
第31章 倉(cāng)儲(chǔ)模式的最佳實(shí)踐 482
31.1 泛型倉(cāng)儲(chǔ)的實(shí)現(xiàn) 482
31.2 異步編碼與同步編碼 483
31.3 IRepository接口的設(shè)計(jì)實(shí)現(xiàn) 484
31.4 RepositoryBase倉(cāng)儲(chǔ)代碼的實(shí)現(xiàn) 489
31.5 小結(jié) 495
第32章 重構(gòu)學(xué)生管理功能 496
32.1 修改HomeController中的代碼 496
32.2 學(xué)生列表排序功能 505
32.3 模糊查詢 507
32.4 一個(gè)簡(jiǎn)單分頁(yè)的實(shí)現(xiàn) 509
32.5 小結(jié) 514
第33章 課程列表與分組統(tǒng)計(jì)功能 515
33.1 泛型分頁(yè) 515
33.2 遷移數(shù)據(jù)信息 521
33.3 課程列表 526
33.4 分部視圖 530
33.5 學(xué)生統(tǒng)計(jì)信息 532
33.6 Razor條件運(yùn)行時(shí)編譯 534
33.7 小結(jié) 535
第34章 復(fù)雜數(shù)據(jù)類型及自動(dòng)依賴注入 536
34.1 創(chuàng)建相關(guān)實(shí)體信息 537
34.1.1 修改Course實(shí)體信息 538
34.1.2 創(chuàng)建學(xué)院與調(diào)整學(xué)生課程信息 539
34.2 更新數(shù)據(jù)庫(kù)上下文及初始化內(nèi)容 542
34.3 服務(wù)之間的自動(dòng)注冊(cè) 552
34.4 小結(jié) 555
第35章 課程與教師的CRUD 556
35.1 EF Core中預(yù)加載的使用 556
35.2 較為復(fù)雜的預(yù)加載的使用 558
35.3 編輯課程功能 569
35.3.1 編輯課程信息 572
35.3.2 課程信息的詳情頁(yè) 575
35.3.3 刪除課程信息 577
35.4 編輯教師功能 578
35.4.1 添加教師信息 583
35.4.2 刪除教師信息 586
35.5 優(yōu)化目錄結(jié)構(gòu) 587
35.6 小結(jié) 588
第36章 處理并發(fā)沖突 589
36.1 并發(fā)沖突 589
36.1.1 悲觀并發(fā)(悲觀鎖) 590
36.1.2 樂(lè)觀并發(fā)(樂(lè)觀鎖) 591
36.2 添加Department的相關(guān)類 591
36.2.1 添加DepartmentsService 592
36.2.2 學(xué)院列表功能 593
36.2.3 添加詳情視圖 597
36.2.4 編輯學(xué)院信息功能 602
36.3 EF Core中的并發(fā)控制 605
36.4 小結(jié) 609
第37章 EF Core中的繼承與原生SQL語(yǔ)句使用 610
37.1 繼承 610
37.1.1 實(shí)現(xiàn)TPH繼承 611
37.1.2 執(zhí)行數(shù)據(jù)庫(kù)遷移 613
37.2 執(zhí)行原生SQL語(yǔ)句 614
37.2.1 DbSet.FromSqlRaw的使用 614
37.2.2 Database.ExecuteSqlComma的使用 615
37.2.3 執(zhí)行原生SQL語(yǔ)句實(shí)現(xiàn)更新 616
37.3 小結(jié) 619
第38章 EF Core 中的數(shù)據(jù)加載與關(guān)系映射 620
38.1 EF Core中的數(shù)據(jù)加載 620
38.1.1 顯式加載 620
38.1.2 延遲加載 621
38.1.3 3種加載形式的性能區(qū)別 623
38.2 Fluent API與數(shù)據(jù)注釋 624
38.3 Entity Framework Core中的Code First關(guān)系映射約定 625
38.3.1 一對(duì)一關(guān)聯(lián)關(guān)系 626
38.3.2 一對(duì)多關(guān)聯(lián)關(guān)系 627
38.3.3 多對(duì)多關(guān)聯(lián)關(guān)系 631
38.4 小結(jié) 632
第五部分
第39章 ASP.NET Core中的Web API 634
39.1 IoT與RESTful服務(wù) 634
39.2 添加Web API服務(wù) 635
39.3 安裝Postman并調(diào)試Web API服務(wù) 639
39.3.1 測(cè)試POST請(qǐng)求 639
39.3.2 測(cè)試GET請(qǐng)求 640
39.3.3 測(cè)試PutTodoItem()方法 642
39.3.4 測(cè)試DeleteTodoItem()方法 644
39.3.5 404和400異常 644
39.4 圖形可視化的Web API幫助頁(yè) 646
39.4.1 Swagger/OpenAPI 646
39.4.2 Swashbuckle.AspNetCore入門(mén) 646
39.4.3 添加并配置Swagger中間件 647
39.4.4 獲取swagger.json失敗 648
39.4.5 調(diào)試Swagger UI 650
39.4.6 調(diào)用SwaggerGen API 654
39.5 小結(jié) 657
第40章 實(shí)踐多層架構(gòu)體系 658
40.1 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的分層結(jié)構(gòu) 658
40.2 重構(gòu)MockSchoolManagement項(xiàng)目 659
40.2.1 添加所需類庫(kù) 661
40.2.2 添加依賴引用關(guān)系 662
40.3 遷移各類庫(kù) 663
40.3.1 各個(gè)項(xiàng)目文件中的引用 664
40.3.2 類庫(kù)效果圖 665
40.3.3 多程序集的依賴注入 667
40.3.4 重新生成遷移記錄及生成SQL腳本 668
40.4 小結(jié) 669
第41章 部署與發(fā)布 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 創(chuàng)建IIS站點(diǎn) 675
41.1.5 使用Visual Studio將ASP.NET Core發(fā)布到IIS站點(diǎn) 676
41.2 部署至Ubuntu 678
41.2.1 Ubuntu中安裝.NET Core 679
41.2.2 安裝Nginx 679
41.2.3 編譯與發(fā)布 680
41.3 在Docker中調(diào)試運(yùn)行ASP.NET Core 682
41.3.1 安裝Docker 682
41.3.2 添加Dockerfile文件 683
41.4 云原生Azure Web App 685
41.5 小結(jié) 689
第42章 ASP.NET Core 2.2到ASP. NET Core 3.1的遷移指南 690
42.1 升級(jí)至ASP.NET Core 3.1 690
42.1.1 修改項(xiàng)目啟動(dòng) 692
42.1.2 修改Startup 693
42.2 遷移升級(jí)后的看法 693
42.3 Visual Studio 2019插件推薦 694
42.4 小結(jié) 696
你還可能感興趣
我要評(píng)論
|