前言
第1章 網站應用程序 /1
1.1 Web應用程序的簡單迴顧 /2
1.1.1 資源的地址—通用資源標識符 /2
1.1.2 找到主機 /3
1.1.3 HTTP協議 /4
1.2 最簡單的 Web 服務器 /6
1.2.1 網絡插座Socket /6
1.2.2 基於 TcpListener 的 Web 服務器 /10
1.2.3 基於 HttpListener 的 Web 服務器 /11
1.3 進入 ASP.NET /13
1.3.1 Web 應用程序域 /13
1.3.2 不使用GAC 和bin 加載Web 應用程序域 /14
1.3.3 默默無聞的工作者對象 /16
1.3.4 Web 應用程序的運行時 /18
1.4 對象化的HTTP /19
1.4.1 請求參數的對象類型 HttpRequest /19
1.4.2 處理迴應的對象類型 HttpResponse /21
1.4.3 輔助的常用工具類 HttpServerUtility /23
1.4.4 編碼與解碼 /24
1.4.5 瀏覽器類型 /26
1.5 創建自定義的 ASP.NET 服務器 /28
1.5.1 ASP.NET Web 服務器 /28
1.5.2 監聽程序 /28
1.5.3 部署程序集 /29
1.5.4 各種各樣的Cassini /30
1.6 本章小結 /30
第2章 應用程序對象 /31
2.1 請求的處理參數—上下文對象HttpContext /32
2.1.1 常用成員 /32
2.1.2 底層方法 /33
2.2 應用程序對象 HttpApplication /33
2.2.1 處理管道 /34
2.2.2 HttpApplication 的處理管道 /38
2.2.3 處理過程的簡單介紹 /38
2.2.4 HttpContext狀態管理 /40
2.3 處理 HttpApplication 的事件 /40
2.3.1 通過 IHttpModule 創建 HttpApplication 的事件處理程序 /40
2.3.2 注冊 HttpModule /41
2.3.3 不使用配置文件注冊 HttpModule /42
2.3.4 常見的 HttpModule /44
2.3.5 HttpModule的事件 /46
2.3.6 通過 global.asax 創建 HttpApplication 的事件處理程序 /46
2.3.7 global.asax 中 HttpApplication 事件的自動注冊 /48
2.3.8 特殊的HttpApplication 事件處理 /48
2.4 兩個特殊的事件 /51
2.5 大文件上傳問題 /51
2.5.1 文件上傳的規範 /51
2.5.2 ASP.NET 中的文件上傳 /53
2.5.3 文件上傳的解決方案 /54
2.5.4 通過HttpModule 接管請求參數 /54
2.5.5 自定義的請求參數對象 /58
2.5.6 讀取上傳數據的接口和實現 /62
2.5.7 讀取上傳數據流 /65
2.5.8 注冊自定義的上傳管理 /76
2.5.9 使用自定義的上傳管理 /77
2.6 各種各樣的文件上傳 /78
2.6.1 無刷新的上傳: jQuery form /78
2.6.2 基於客戶端技術的上傳進度:SWFUpload /79
2.7 本章小結 /79
第3章 HTTP請求處理程序/80
3.1 處理程序 /81
3.1.1 處理程序與 HttpApplication 的關係 /81
3.1.2 處理程序接口 IHttpHandler 和 IHttpAsyncHandler /81
3.1.3 在處理程序中使用會話 /82
3.1.4 處理程序工廠 /83
3.1.5 注冊處理程序 /83
3.1.6 使用處理程序生成驗證碼 /84
3.2 一般處理程序 /86
3.2.1 一般處理程序工廠 /87
3.2.2 使用一般處理程序的場閤 /87
3.2.3 使用一般處理程序生成驗證碼圖片 /87
3.2.4 使用一般處理程序生成 JSON /87
3.3 頁麵處理程序 /91
3.3.1 頁麵處理程序工廠 /91
3.3.2 創建頁麵處理程序 /92
3.3.3 生成的代碼 /93
3.3.4 使用頁麵處理程序 /93
3.4 Web 服務處理程序 /94
3.4.1 Web 服務處理程序工廠 /94
3.4.2 使用 Web 服務處理程序 /95
3.4.3 Web 服務的常用標簽 /96
3.4.4 派生自 System.Web.Services.WebService 類的意義 /98
3.5 MVC 處理程序 /98
3.5.1 MVC 的路由接口 IRouteHandler /99
3.5.2 自定義的 IRouteHandler /100
3.5.3 注冊路由處理程序 /101
3.5.4 獲取控製器的工廠接口 IControllerFactory /102
3.5.5 MVC 請求的處理過程 /102
3.6 資源處理程序 /103
3.6.1 資源的處理程序配置 /103
3.6.2 定義嵌入的資源 /103
3.6.3 獲取資源的地址 /104
3.6.4 使用嵌入的資源 /104
3.7 禁止的處理程序 /105
3.7.1 配置禁止訪問的資源 /105
3.7.2 禁止訪問 Excel /106
3.8 虛擬路徑提供器 /106
3.8.1 定義虛擬路徑提供器 /106
3.8.2 注冊虛擬路徑提供器 /107
3.8.3 壓縮文件中的網站 /109
3.8.4 SharpZipLib /114
3.9 本章小結 /115
第4章 ASP.NET中的綫程與異步 /116
4.1 綫程基礎 /117
4.1.1 綫程 /117
4.1.2 自定義綫程 /118
4.1.3 前颱綫程和後颱綫程 /119
4.1.4 工作者綫程和 I /O 綫程 /119
4.1.5 綫程池 /120
4.2 .NET 中綫程處理 /121
4.2.1 綫程的創建與啓動 /121
4.2.2 綫程的狀態 /123
4.2.3 綫程的執行上下文 /124
4.2.4 異步編程模式APM /125
4.2.5 基於事件的異步編程模式 EPM /128
4.2.6 異步綫程的狀態與同步問題 /129
4.2.7 處理管道中的異步問題 /133
4.3 綫程池 /137
4.3.1 綫程池的工作原理 /137
4.3.2 將工作者綫程加入綫程池 /138
4.3.3 將I /O 綫程加入綫程池 /138
4.4 HttpApplication 中的異步綫程 /139
4.4.1 ASP.NET 中的綫程池設置 /139
4.4.2 異步步驟中的異步點 /141
4.4.3 啓動和完成異步步驟 /142
4.5 異步處理程序 /142
4.5.1 異步處理程序接口 /143
4.5.2 在處理程序中異步調用 Web 服務 /143
4.6 異步頁麵 /144
4.6.1 頁麵異步任務的啓動和完成 /144
4.6.2 異步頁麵任務 /145
4.6.3 異步頁麵中訪問 Web 服務三種方式 /146
4.6.4 實例—查詢 QQ 在綫狀態 /148
4.7 本章小結 /151
第5章 頁麵即對象 /152
5.1 流動的網頁 /153
5.1.1 字節流 /154
5.1.2 字符編碼 /155
5.1.3 字符流 /156
5.1.4 迴應對象中的流 /158
5.1.5 專門輸齣 HTML 的字符流 /158
5.2 控件—頁麵對象的基石 /160
5.2.1 控件類 /160
5.2.2 Render和RenderControl /161
5.2.3 控件基類 /161
5.2.4 組閤模式 Composite /163
5.2.5 ID 是一個問題 /165
5.3 形形色色的控件 /171
5.3.1 HTML 控件 /172
5.3.2 Web 控件 /172
5.3.3 WebPart 控件 /174
5.4 控件實現的常用接口 /175
5.4.1 生成和迴發 /175
5.4.2 控件的任意屬性IAttributeAccessor /177
5.4.3 數據的迴發IPostBackDataHandler /177
5.4.4 迴發服務器端事件IPostBackEventHandler /178
5.5 頁麵 /178
5.5.1 頁麵與模闆 /179
5.5.2 母版頁 /184
5.5.3 頁麵就是一個處理程序 /185
5.5.4 頁麵的事件處理管道 /185
5.5.5 處理頁麵的事件 /187
5.6 生成的過程 /188
5.6.1 從模闆到對象模型—BuildProvider /189
5.6.2 從標記到控件—ControlBuilder /191
5.6.3 進入生成階段—ControlAdapter /191
5.6.4 控件適配器—ControlAdapter /192
5.6.5 Web控件適配器—WebControlAdapter /193
5.6.6 頁麵適配器—PageAdapter /193
5.6.7 使用 Adapter 定製錶單的action /194
5.7 自定義的 URL 重寫 /195
5.7.1 URL 重寫的原理 /196
5.7.2 使用 HttpModule 實現URL 重寫 /196
5.7.3 在配置文件中處理重寫映射 /199
5.7.4 無擴展名請求的處理問題 /204
5.8 本章小結 /205
第6章 狀態 /206
6.1 基本狀態管理 /207
6.1.1 隱藏域 /207
6.1.2 Cookie /209
6.1.3 URL /213
6.2 視圖狀態ViewState /215
6.2.1 序列化和反序列化 /215
6.2.2 控製序列化 /217
6.2.3 Base64 /218
6.2.4 視圖狀態屬性與 IStateManager 接口 /219
6.2.5 保存和恢復的時間點 /221
6.2.6 視圖狀態的序列化器 /223
6.2.7 使用視圖狀態實現路徑導航 /224
6.3 控件狀態 ControlState /228
6.4 應用程序狀態 Application /229
6.5 會話狀態 Session /229
6.5.1 服務器端的 Session /230
6.5.2 客戶端的 SessionID /231
6.5.3 Session 保存的位置 /233
6.5.4 Session 的過期問題 /237
6.5.5 壓縮 Session 數據 /238
6.6 HttpContext 狀態 /238
6.7 Cache /238
6.7.1 緩存的原理 /238
6.7.2 .NET 中的緩存管理實現 /239
6.7.3 基於文件的緩存依賴 /241
6.7.4 基於SQL的緩存依賴 /242
6.7.5 組閤的緩存依賴 /244
6.7.6 刪除所有的緩存項目 /246
6.7.7 Web 服務器端的頁麵緩存 /247
6.7.8 頁麵局部緩存 /249
6.7.9 自定義的輸齣緩存提供器 /253
6.8 Memcached /254
6.8.1 下載和安裝 Memcached /255
6.8.2 在 ASP.NET 中訪問 Memcached /256
6.9 統計當前在綫用戶 /258
6.9.1 Module 的處理 /258
6.9.2 注冊 Module /261
6.9.3 Module 的配置參數 /262
6.9.4 Module 的事件處理 /263
6.10 本章小結 /263
第7章 模闆和數據綁定 /264
7.1 頁麵與綁定 /265
7.1.1 嵌入式代碼塊和錶達式 /265
7.1.2 綁定錶達式 /267
7.1.3 目標Target /269
7.1.4 容器Container /269
7.1.5 觸發綁定事件的方法 DataBind /270
7.2 控件內的模闆 /271
7.2.1 基於模闆的控件 /271
7.2.2 控件模闆中的 Container /272
7.2.3 DataBinder /272
7.2.4 Page 中的 Eval /273
7.2.5 在屬性中使用綁定錶達式 /273
7.3 Repeater控件 /273
7.3.1 數據的來源 DataSource /273
7.3.2 Repeater 的基石—RepeaterItem /274
7.3.3 綁定的過程 /275
7.3.4 綁定中的事件 /276
7.3.5 綁定的結果:Controls 集閤和 Items 集閤 /276
7.3.6 迴發中的 ItemCommand 事件 /277
7.4 高級數據控件 /279
7.4.1 唯一支持分欄的控件-DataList /279
7.4.2 GridView /283
7.4.3 ListView 和 DataPager /289
7.5 數據源控件 /291
7.5.1 反射 /292
7.5.2 兩種數據源 /293
7.5.3 對象數據源 /297
7.5.4 業務對象的標簽 /298
7.5.5 頁麵控件與數據源控件之間的關係 /300
7.5.6 數據源控件相關的事件點 /303
7.5.7 基於數據源控件的分頁 /304
7.6 本章小結 /305
第 8 章 自定義控件 /306
8.1 自定義控件的繼承體係 /307
8.2 自定義控件涉及的相關類型 /307
8.3 自定義的帶有上傳進度的按鈕 /308
8.3.1 控件的工作原理 /308
8.3.2 選擇控件的基類 /309
8.3.3 自定義的數據類型 /309
8.3.4 狀態的持久化 /310
8.3.5 控件的屬性 /312
8.3.6 屬性轉換問題—TypeConverter /313
8.3.7 編輯屬性數據 UITypeEditor /320
8.3.8 保存在 ASPX 中 /326
8.3.9 設計器中的顯示效果 /329
8.3.10 工具欄中控件的圖標 /330
8.3.11 腳本嵌入和使用 /330
8.3.12 控件的呈現 /332
8.3.13 使用自定義控件 /334
8.4 PetShop 中的自定義控件 /335
8.4.1 基類 /335
8.4.2 錶格 /335
8.4.3 處理當前頁碼參數 /336
8.4.4 DataSource 屬性 /336
8.4.5 事件 /337
8.4.6 生成 /338
8.5 本章小結 /342
第 9 章 MVC /343
9.1 ASP.NET MVC 是錶現層的MVC /344
9.2 在 HttpApplication 中的ASP.NET MVC /344
9.2.1 創建 RouteTable /345
9.2.2 UrlRoutingModule事件處理 /347
9.3 從URL進入MVC之門 /348
9.3.1 有意義的 URL /349
9.3.2 在 IIS 6.0 和 IIS 7 中的配置 /349
9.3.3 從URL到Route /350
9.3.4 約束 /354
9.3.5 Routing /356
9.3.6 RequestContext 的前世今生 /357
9.3.7 在 ASP.NET MVC 中防盜鏈 /358
9.4 控製器 /361
9.4.1 控製器工廠 /361
9.4.2 使用自定義的控製器工廠 /362
9.4.3 為 Controller 類傳遞構造函數的參數 /362
9.4.4 Controller 的繼承關係 /364
9.4.5 Controller 中的狀態管理 /365
9.4.6 基於過濾器的擴展 /368
9.4.7 選擇 Action /372
9.5 模型 /373
9.5.1 綁定 Model /374
9.5.2 簡單參數和復雜參數 /374
9.5.3 模型對象的元數據 /375
9.5.4 Model 的驗證 /377
9.5.5 自定義Model 的驗證 /379
9.6 執行 Action /380
9.6.1 各種ActionResult /380
9.6.2 嚮視圖傳遞數據 /381
9.7 視圖 /382
9.7.1 視圖引擎 /382
9.7.2 經典視圖—ViewPage /383
9.7.3 視圖引擎—Razor /384
9.8 本章小結 /384
第10 章 IIS 與 ASP.NET /385
10.1 網站 /386
10.1.1 綁定 /386
10.1.2 網站應用程序 /388
10.1.3 虛擬目錄 /389
10.2 通過 ISAPI 擴展 IIS /390
10.2.1 ISAPI 擴展 /391
10.2.2 ISAPI 過濾器 /392
10.2.3 CLR 是一個 COM 組件 /394
10.2.4 ASP.NET 中的ISAPI 擴展和過濾器 /396
10.2.5 ISAPI Rewrite /396
10.3 IIS 與 ASP.NET /397
10.3.1 IIS5 與 ASP.NET /397
10.3.2 IIS6 與 ASP.NET /398
10.3.3 IIS7 與 ASP.NET /399
10.4 創建網站的兩種方法 /403
10.5 ASP.NET中的加密與解密 /405
10.5.1 machineKey /405
10.5.2 加密服務 /407
10.5.3 配置節的加密和解密 /408
10.6 本章小結 /410
第11 章 ASP.NET中的用戶 /411
11.1 從IIS開始 /412
11.1.1 匿名用戶方式 /413
11.1.2 基本身份驗證 /413
11.1.3 摘要式身份驗證 /414
11.1.4 集成 Windows 身份驗證 /415
11.1.5 .NET Passport 身份驗證 /416
11.2 ASP.NET中的用戶信息 /416
11.2.1 基於 Windows 驗證的用戶 /416
11.2.2 基於 Forms 驗證的用戶 /417
11.2.3 基於 Passport 驗證的用戶 /420
11.2.4 在 IIS7 中使用錶單驗證 /420
11.3 .NET 中的用戶 /421
11.3.1 用戶的標識 IIdentity /421
11.3.2 用戶 IPrincipal /422
11.4 網站中的用戶 /423
11.5 成員管理 /423
11.5.1 用戶的基本信息 /424
11.5.2 成員管理的約定 /425
11.5.3 基於 SQLServer 的成員管理實現 /426
11.5.4 自定義的成員管理實現 /427
11.5.5 輔助工具類 Membership /432
11.6 用戶的擴展信息—個性化數據 /433
11.6.1 個性化數據的約定 /433
11.6.2 個性化數據的屬性 /434
11.6.3 實現自定義的個性化數據管理 /436
11.6.4 匿名的個性化數據 /439
11.6.5 閤並匿名用戶的個性化數據 /441
11.6.6 基於 SQL Server 的個性化數據管理 /442
11.6.7 管理個性化數據 /444
11.7 執行程序的用戶 /444
11.7.1 執行網站程序的 Windows 用戶 /445
11.7.2 用戶模擬的作用 /446
11.7.3 數據庫連接串中的用戶 /447
11.8 本章小結 /449
附錄 自定義配置參數 /450
· · · · · · (
收起)