開啟主選單

求真百科

深入淺出ASP·NETCore

來自 孔夫子網 的圖片

深入淺出ASP·NETCore》,周家安 編,出版社: 清華大學出版社。

清華大學出版社成立於1980年6月,是教育部主管、清華大學主辦的綜合性大學出版社[1]。清華社先後榮獲 「先進高校出版社」「全國優秀出版社」「全國百佳圖書出版單位」「中國版權最具影響力企業」「首屆全國教材建設獎全國教材建設先進集體」等榮譽[2]

目錄

內容簡介

這是一本面向ASP.NET Core新手的基礎教程,學用相長,注重實踐。每個關鍵知識點都配有簡單的示例,以輔助理解。本書內容涉及ASP.NET Core應用程序的初始化、配置,服務容器與依賴注入的使用,HTTP/中間件管道的構建,HTTP會話狀態的維護,Razor頁面與MVC,Web API,Blazor,靜態文件的訪問,以及安全與授權。

目錄

第1章 初始化ASP.NET Core應用程序 1

1.1 應用程序的啟動過程 1

1.2 WebApplicationBuilder類 2

1.3 啟動應用程序 3

1.4 使用Host初始化應用程序 4

1.4.1 通用主機 5

1.4.2 示例:簡單的通用主機 5

1.4.3 Web主機 7

1.5 設置應用程序的URL 9

1.5.1 調用UseUrls()方法 9

1.5.2 使用WebApplication類的Urls屬性 10

1.5.3 調用Run()方法時傳遞URL 10

1.5.4 通過ServerAddressesFeature對象設置URL 11

1.5.5 使用命令行參數 12

1.5.6 使用配置文件 13

1.5.7 使用環境變量 13

1.5.8 使用launchSettings.json文件 14

1.5.9 Kestrel服務器的偵聽地址 14

1.5.10 通過HTTP.sys配置URL 15

1.5.11 PreferHostingUrls()方法的作用 15

1.6 應用程序生命周期事件 16

第2章 運行環境 18

2.1 定義運行環境 18

2.2 Is{EnvironmentName}擴展方法 19

2.3 多運行環境下的配置文件 21

2.4 用於環境篩選的Razor標記 23

2.5 運行環境與依賴注入 25

第3章 依賴注入 28

3.1 依賴注入與服務容器 28

3.1.1 ServiceCollection類 31

3.1.2 ServiceProvider類 32

3.2 .NET項目中的依賴注入 32

3.3 ASP.NET Core項目中的依賴注入 33

3.4 構建存在依賴關係的服務 35

3.5 服務的生存期 38

3.6 GetService()方法與GetRequiredService()方法的區別 41

3.7 注入多個服務實例 42

3.8 容易被忽略的問題 46

第4章 配置應用程序 48

4.1 配置的基本結構 48

4.2 在.NET應用程序中使用配置 49

4.3 在ASP.NET Core應用程序中使用配置 51

4.3.1 配置的數據來源 51

4.3.2 查看所有配置信息 51

4.4 IConfigurationBuilder接口 52

4.5 ConfigurationManager類 53

4.6 IConfigurationSource接口與IConfigurationProvider接口 54

4.6.1 自定義擴展點 55

4.6.2 示例:來自CSV文件的配置 56

4.7 JSON配置 59

4.7.1 示例:訪問JSON數組對象 62

4.7.2 示例:自動重新加載配置 63

4.8 XML配置 64

4.9 環境變量 67

4.9.1 設置環境變量前綴 68

4.9.2 替換默認的ASPNETCORE_前綴 70

4.9.3 示例:替換環境變量前綴 70

4.9.4 分層配置結構 71

4.10 命令行參數 72

4.11 ini配置 75

4.12 配置與依賴注入 78

4.12.1 示例:將IConfiguration注入MVC控制器 78

4.12.2 示例:通過配置選擇哈希算法 79

4.13 鏈接多棵配置樹 82

第5章 選項模式 85

5.1 選項模式概述 85

5.2 服務容器的擴展方法 87

5.3 各接口之間的關係 87

5.3.1 IConfigureOptions接口與IConfigureNamedOptions接口 87

5.3.2 IPostConfigureOptions接口 88

5.3.3 IValidateOptions接口 88

5.3.4 IOptionsFactory接口 89

5.3.5 完整的流程圖 90

5.4 選項類的封裝接口 91

5.4.1 示例:在MVC控制器中訪問選項類 92

5.4.2 示例:自動更新選項類 93

5.5 帶名稱的選項組 95

5.6 後期配置 98

5.7 選項類的驗證 99

5.7.1 內置的驗證方式 100

5.7.2 使用數據批註 102

5.8 處理帶參數的構造函數 105

5.9 直接實現IOptions接口 108

第6章 HTTP管道 110

6.1 HTTP管道與中間件 110

6.2 中間件的實現方法 110

6.3 通過委託實現中間件 111

6.3.1 示例:Use()方法的簡單用法 114

6.3.2 HTTP管道的「短路」 115

6.3.3 Run()方法 116

6.4 通過類實現中間件 117

6.4.1 帶參數的中間件 118

6.4.2 中間件類與依賴注入 119

6.5 通過IMiddleware接口實現中間件 120

6.6 終結點 121

6.6.1 示例:常見的HTTP請求方式 123

6.6.2 示例:同時使用Razor Pages和MVC 125

6.6.3 為終結點分配名稱 127

6.6.4 元數據 129

6.7 有條件地執行中間件 130

6.7.1 示例:調用包含user_id字段的中間件 131

6.7.2 示例:只允許以POST方式調用Web API 132

第7章 HTTP狀態存儲 135

7.1 HTTP上下文 135

7.1.1 示例:在中間件中設置響應標頭 136

7.1.2 示例:在Map*()方法中訪問HTTP上下文 137

7.1.3 示例:使用Razor標記呈現HTTP請求標頭 138

7.1.4 示例:在MVC中訪問HTTP上下文 140

7.2 HTTP消息頭 141

7.2.1 HeaderNames類 143

7.2.2 消息頭的分類 144

7.2.3 分析複雜消息頭 145

7.3 查詢字符串 148

7.3.1 讀取查詢參數 149

7.3.2 多值參數 150

7.4 表單數據 151

7.4.1 讀取簡單的表單數據 151

7.4.2 文件上傳 153

7.5 Cookie 157

7.6 HttpContext類的Items屬性 159

7.7 會話 160

7.7.1 ISession接口 161

7.7.2 設置會話Cookie的名稱 164

7.7.3 示例:將會話數據存儲到JSON文件中 164

第8章 Razor頁面 172

8.1 Razor頁面的特點 172

8.2 Razor語法 173

8.2.1 兩種表達式 173

8.2.2 代碼塊 174

8.2.3 注釋 175

8.2.4 流程控制 176

8.3 開啟Razor頁面功能 177

8.4 Razor頁面文件 178

8.5 頁面文件的搜索路徑 179

8.5.1 配置RazorPagesOptions選項類 180

8.5.2 便捷的擴展方法 180

8.6 頁面路由 181

8.6.1 通過@page指令設置路由規則 181

8.6.2 通過約定模型定義路由規則 182

8.7 頁面模型類 184

8.7.1 頁面自身作為模型類 185

8.7.2 從PageModel派生類 185

8.7.3 通過特性類實現頁面模型類 186

8.8 頁面處理程序 187

8.8.1 通用的處理程序 188

8.8.2 解決POST請求時出現的錯誤 189

8.8.3 使用多個處理程序 190

8.8.4 通過路由參數選擇處理程序 192

8.8.5 自定義的處理程序模型 193

第9章 MVC框架 199

9.1 MVC基本概念 199

9.2 啟用MVC功能 199

9.3 控制器 200

9.3.1 示例:從ControllerBase類派生 203

9.3.2 示例:從Controller類派生 205

9.3.3 示例:使用ControllerAttribute 205

9.3.4 示例:使用Controller後綴 206

9.3.5 自定義控制器的名稱 207

9.3.6 示例:ControllerNameAttribute類 207

9.3.7 自定義操作方法的名稱 208

9.3.8 示例:CustActionNameAttribute類 208

9.3.9 示例:ActionNameAttribute類 209

9.4 MVC路由規則 210

9.4.1 全局路由規則 211

9.4.2 示例:註冊兩條全局路由規則 211

9.4.3 局部路由規則 212

9.4.4 IRouteTemplateProvider接口 213

9.4.5 通過實現約定接口定義路由規則 214

9.4.6 示例:CustPrefixRouteConvention類 215

9.5 限制操作方法所支持的HTTP請求 217

9.5.1 示例:只支持HTTP-PUT請求的操作方法 217

9.5.2 內置特性類 218

9.6 區域 220

9.7 視圖 221

9.7.1 視圖文件的默認存放路徑 221

9.7.2 自定義視圖的路徑格式 222

9.7.3 布局視圖 225

9.7.4 示例:布局視圖的查找順序 226

9.7.5 示例:配置Razor Pages布局視圖的查找路徑 229

9.7.6 _ViewImports與_ViewStart文件 231

9.7.7 示例:_ViewStart文件的替換行為 232

9.8 IViewLocationExpander接口 233

9.8.1 示例:多版本視圖 234

9.8.2 示例:根據URL查詢參數擴展視圖路徑 237

9.8.3 LanguageViewLocationExpander類 240

9.9 局部視圖 242

9.9.1 示例:成績單 243

9.9.2 示例:導航欄 246

9.10 視圖組件 248

9.10.1 示例:一個簡單的視圖組件 249

9.10.2 視圖文件的查找路徑 250

9.10.3 示例:帶參數的視圖組件 251

9.10.4 通過標記幫助器調用視圖組件 253

9.10.5 示例:Greeting視圖組件 254

9.10.6 示例:在MVC控制器中調用視圖組件 255

9.10.7 兩個特性類 255

9.11 識別其他程序集中的控制器 256

9.11.1 示例:使用ApplicationPartAttribute類 256

9.11.2 示例:使用AddApplicationPart()擴展方法 257

9.11.3 示例:使用ApplicationPartManager類 259

第10章 模型綁定 261

10.1 概述 261

10.2 自動綁定 262

10.2.1 示例:計算器 263

10.2.2 示例:綁定數組類型的數據 264

10.2.3 示例:綁定複雜類 266

10.2.4 多個參數的模型綁定 268

10.2.5 示例:綁定3個參數 268

10.2.6 字典類型的模型綁定 270

10.2.7 示例:綁定字典數據 270

10.2.8 示例:綁定IFormCollection類型 272

10.2.9 示例:MD5計算器 273

10.2.10 綁定IFormFile和IFormFileCollection類型 274

10.2.11 示例:上傳一個文本文件 275

10.2.12 示例:上傳多個文件 276

10.3 設置模型綁定的來源 278

10.3.1 示例:綁定HTTP消息頭 278

10.3.2 示例:從HTTP消息正文提取數據 279

10.3.3 示例:與路由參數綁定 280

10.3.4 示例:FromServices特性的使用 280

10.3.5 示例:混合使用From*特性類 282

10.3.6 示例:將From*特性類應用於屬性成員 283

10.4 自定義IValueProvider接口 284

10.4.1 示例:由自定義字符串提供的值 285

10.4.2 示例:CookieValueProvider 288

10.5 IModelBinder接口 292

10.5.1 內置綁定器 293

10.5.2 示例:AddressInfoModelBinder類 294

10.6 BindRequiredAttribute類與BindNeverAttribute類 296

10.7 綁定到屬性成員 299

10.7.1 示例:控制器的屬性綁定 299

10.7.2 示例:PageModel中的屬性綁定 300

10.7.3 示例:CancellationToken類型的屬性綁定 302

第11章 Web API 305

11.1 Web API基礎 305

11.1.1 ControllerBase類與Controller類 305

11.1.2 ApiController特性 306

11.1.3 示例:一個簡單的Web API 306

11.1.4 示例:以POST方式提交數據 308

11.2 XML格式 310

11.2.1 示例:常規的XML序列化方案 311

11.2.2 示例:使用XmlDataContractSerializer方案 314

11.3 選擇響應格式 316

11.3.1 示例:通過Accept消息頭選擇響應格式 316

11.3.2 示例:使用格式過濾器 317

11.4 自定義格式 319

11.4.1 示例:CustDataInputFormatter類 319

11.4.2 示例:BytesToHexOutputFormatter類 323

11.5 極小API 325

11.5.1 示例:一些簡單的極小API例子 325

11.5.2 示例:在極小API上使用數據源特性 327

11.5.3 上傳文件 328

11.5.4 示例:直接讀取文件流 328

11.5.5 示例:上傳多個文件 330

11.5.6 IResult接口 332

11.5.7 示例:Results類的使用 333

11.6 API瀏覽功能 333

11.6.1 IApiDescriptionGroupCollectionProvider接口 334

11.6.2 示例:列出已定義的Web API 334

11.6.3 API約定 337

11.6.4 Swagger框架 339

11.6.5 示例:使用Swagger生成API文檔 340

參考文獻

  1. 我國出版社的等級劃分和分類標準,知網出書,2021-03-01
  2. 企業簡介,清華大學出版社有限公司