前言
第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
· · · · · · (
收起)