标题：深入ASP.NET2.0开发
内容提要
本书主要介绍如何使用ASP.NET2.0开发坚实的基于Web的业务应用程序。除讲解了ASP.NET2.0的新特性(母版页、主题、皮肤、Web部件框架等)之外，还深入讨论了对真实ASP.NET项目至关重要的主题，包括配置策略、异常管理、可复用控件开发、用户配置管理、搜索、报表、数据输入、文件上传、安全加密等。
书中提供了大量实践例子和作者的经验之谈，适合已有ASP.NET经验的中高级读者。
编辑推荐
本书是针对中高级程序员，从实战需要而不是知识点本身的逻辑出发，讲述了如何充分运用ASP.NET2.0的各种新增的和高级的特性(包括配置策略、异常管理、可重用组件的开发、成员资格、角色管理、个性化等等)，高效而且高质量地开发ASP.NET网站项目。作者与ASP.NET核心开发人员RobHoward曾共事多年。对他设计的ASP.NET诸多至关重要的特性了如指掌，深得其真传。这在本书中得到了充分体现。此外，书中穿插了作者在10多年开发经历中解决各种实战问题所积累大量实例、经验和技巧，不仅让读者知道如何进行特定的设计和实现，而且还能够领悟其中的道理。
作者简介
DamonArmstrong：资深ASP.NET程序员，毕业于得克萨斯大学，从事商业应用程序开发超过10年，尤其擅长VB.NET和ASP.NET。曾在，ASP.NET高手云集的Telligent系统公司担任技术顾问，获益匪浅，目前在著名IT咨询企业Cogent公司担任资深软件架构师。
目录
第1章   配置策略　1
1.1　ASP.NET?2.0中的新配置工具　2
1.1.1　Web站点管理工具　2
1.1.2　IIS中的ASP.NET属性页　5
1.2　配置基础　7
1.2.1　应用程序设置　8
1.2.2　连接字符串　8
1.2.3　配置指导原则　10
1.3　强类型配置类　11
1.3.1　强类型配置样例应用程序　11
1.3.2　添加Web.config文件　11
1.3.3　Config类　12
1.3.4　在代码中使用Config类　14
1.3.5　Config类中的错误处理　15
1.3.6　缓存应用程序设置和连接字符串　16
1.4　自定义配置节　17
1.5　在数据库中存储配置设置　29
1.5.1　何时避免使用Web.config文件　29
1.5.2　创建数据库表来存储配置设置　30
1.5.3　避免SQL注入攻击　30
1.5.4　创建DataConfig类　32
1.5.5　从数据库读取配置值　32
1.5.6　把配置值写入到数据库　33
1.5.7　DataConfig类的属性　34
1.5.8　在数据库中序列化和反序列化对象　35
1.6　小结　38
第2章　异常管理　39
2.1　异常管理基础　39
2.1.1　什么是异常　40
2.1.2　使用Try?Catch语句处理异常　40
2.1.3　使用多个Catch语句　42
2.1.4　使用When子句捕获特定的错误　44
2.1.5　使用Finally关键字　45
2.1.6　抛出异常　46
2.1.7　创建自定义异常类　47
2.1.8　内部异常和异常包装　49
2.1.9　异常传播　51
2.2　全局错误处理　53
2.2.1　IIS与ASP.NET错误　53
2.2.2　定义ASP.NET的默认错误页面　53
2.2.3　使用ASPX页面作为默认错误页面　54
2.2.4　在ASP.NET中定义自定义错误页面　54
2.2.5　在IIS中定义自定义错误页面　55
2.2.6　使用应用程序错误事件　56
2.3　记录异常以便分析　57
2.3.1　选择异常日志记录工具　57
2.3.2　架构概览　58
2.3.3　创建ExceptionLog表来存储数据　59
2.3.4　ExceptionLog类　59
2.3.5　ExceptionLogCollection类　66
2.3.6　ExceptionLogger类　69
2.3.7　在代码中使用Exception-Logger类　72
2.3.8　在线浏览异常　72
2.4　小结　79
第3章　母版页、主题和控件皮肤　81
3.1　母版页　81
3.1.1　创建母版页　82
3.1.2　创建内容页面　85
3.1.3　从内容页面中访问母版页　88
3.1.4　为应用程序定义默认的母版页　89
3.1.5　在代码中修改母版页　89
3.1.6　嵌套母版页　90
3.2　主题和控件皮肤　91
3.2.1　创建主题　92
3.2.2　往主题中添加CSS　92
3.2.3　为主题创建控件皮肤　92
3.2.4　禁用控件皮肤　93
3.2.5　为主题创建命名的控件皮肤　94
3.2.6　把主题应用到指定的页面或整个应用程序　94
3.2.7　对主题进行编程　95
3.3　小结　95
第4章　开发可复用的组件：皮肤化的页面消息控件　96
4.1　ASP.NET?2.0中的新控件特性　97
4.1.1　用户控件的设计时呈现　97
4.1.2　全局标签注册　98
4.2　使用ControlState开发服务器控件　99
4.2.1　建立ControlStateExample控件　100
4.2.2　创建ControlState演示页面　103
4.2.3　在演示页面中查看ControlState的行为　105
4.3　构建一个皮肤化的页面消息控件　105
4.3.1　什么是皮肤化的控件　106
4.3.2　服务器控件如何操纵UserControl　106
4.3.3　皮肤化控件如何实现　107
4.3.4　皮肤化页面消息服务器控件的架构　108
4.3.5　UserControl皮肤的存储位置　110
4.3.6　设立消息Web控件项目　110
4.3.7　皮肤化Web控件的类　111
4.3.8　MessageDataCollection类　114
4.3.9　为控件库定义一个标准的标签前缀　121
4.3.10　设计时呈现　121
4.3.11　在Web项目中引用Page-MessageControl　122
4.3.12　创建PageMessageControl皮肤文件　122
4.3.13　使用PageMessageControl　127
4.4　小结　128
第5章　用于表单验证的用户管理工具和登录控件　130
5.1　ASP.NET的表单验证　131
5.1.1　验证模式　131
5.1.2　为应用程序配置验证模式　133
5.1.3　验证票据的概念　133
5.1.4　验证cookie　134
5.1.5　指定默认登录页面和登录重定向URL　134
5.1.6　其他表单验证配置选项　135
5.1.7　手动实现表单验证　137
5.2　处理成员资格和角色对象　144
5.2.1　Memebership对象　144
5.2.2　角色对象　147
5.2.3　对成员资格和角色对象进行编程　149
5.2.4　配置Memebership和Role提供程序　149
5.3　用Web站点管理工具管理用户和安全性　153
5.3.1　打开Web站点管理工具　153
5.3.2　Home选项卡　153
5.3.3　Provider选项卡　154
5.3.4　Security选项卡　156
5.3.5　添加、编辑和删除用户　162
5.4　ASP.NET?2.0登录控件　164
5.4.1　模板化控件　165
5.4.2　创建模板　166
5.4.3　Login控件　168
5.4.4　LoginView控件　170
5.4.5　PasswordRecovery控件　173
5.4.6　LoginStatus控件　175
5.4.7　LoginName控件　176
5.4.8　CreateUserWizard控件　176
5.4.9　ChangePassword控件　178
5.5　小结　180
第6章　管理用户配置　181
6.1　用户配置基础　182
6.1.1　Profile对象　182
6.1.2　启用和禁用用户配置　183
6.1.3　在Web.config中定义用户配置属性　183
6.1.4　创建用户配置属性组　184
6.1.5　实现用户配置属性类　185
6.1.6　强类型属性　187
6.1.7　ProfileManager类　188
6.2　处理匿名用户配置　190
6.2.1　启用匿名用户配置标识　190
6.2.2　什么时候使用匿名标识　193
6.2.3　匿名标识的缺点　193
6.2.4　定义匿名用户配置属性　194
6.2.5　用IsAnonymous避免匿名写入异常　194
6.2.6　重要的默认属性值　195
6.2.7　创建用户配置迁移代码　196
6.3　创建简单的定向广告　197
6.3.1　定义用户配置属性以跟踪内容偏好　197
6.3.2　构建定向广告的示例页面　198
6.4　购物车自定义属性　200
6.4.1　创建购物车　200
6.4.2　在Web.config中定义Shopping-Cart属性　203
6.4.3　构建产品显示组件以向购物车添加产品　204
6.4.4　构建购物车演示页面　207
6.4.5　带购物车的用户配置迁移　211
6.5　小结　212
第7章　使用Web部件框架构建门户　213
7.1　Web部件框架的概念　214
7.1.1　Web部件的概念　215
7.1.2　Web部件连接　215
7.1.3　门户页面显示模式　216
7.1.4　用区域定义门户区块　217
7.1.5　用户和共享范围　218
7.1.6　关闭和删除Web部件　221
7.1.7　隐藏和关闭Web部件　221
7.2　Web部件的接口、类和控件　222
7.2.1　IWebPart接口　222
7.2.2　Part类　225
7.2.3　WebPart类　225
7.2.4　GenericWebPart包装类　228
7.2.5　WebPartManager控件　229
7.2.6　ProxyWebPartManager控件　234
7.2.7　Web部件区域　234
7.2.8　WebPartZone控件和静态Web部件　235
7.2.9　CatalogZone控件和相关的目录部件　238
7.2.10　EditorZone控件和相关的编辑器部件　242
7.2.11　ConnectionsZone控件　246
7.3　构建Web部件示例　250
7.3.1　定义Web部件属性　251
7.3.2　实现基于UserControl的Web部件　252
7.3.3　实现自定义Web部件　260
7.4　高级Web部件主题　264
7.4.1　为Web部件添加自定义动词　265
7.4.2　连接提供方和接收方　267
7.4.3　导出Web部件配置文件　275
7.5　小结　277
第8章　适用于业务应用程序的有效搜索工具和技术　278
8.1　创建SqlQuery工具　279
8.1.1　目标和架构概览　279
8.1.2　Globals.vb中的枚举　280
8.1.3　SqlField类　281
8.1.4　SqlFieldCollection类　283
8.1.5　分析对象模型搜索中的WHERE子句　284
8.1.6　ISqlCondition接口　287
8.1.7　SqlCondition类　289
8.1.8　SqlConditionGroup类　290
8.1.9　构建SqlQuery类　301
8.1.10　SqlQuery类　303
8.1.11　使用SqlQuery对象构建查询　312
8.1.12　用SqlQuery类执行查询　316
8.1.13　用SqlQuery类执行分页查询　317
8.2　常用的搜索函数　318
8.2.1　日期范围搜索　319
8.2.2　使用DateRangeSearch　321
8.2.3　关键字搜索　322
8.2.4　使用CreateKeywords函数　326
8.3　显示基本和高级的搜索　327
8.3.1　ISearchControl接口　327
8.3.2　创建基本的搜索表单(SimpleForm.ascx)　328
8.3.3　创建高级搜索表单(AdvancedForm.ascx)　329
8.3.4　实现主搜索页面(EmployeeSearch.aspx)　330
8.3.5　基于用户控件的搜索表单的优势　333
8.4　小结　333
第9章　构建可复用的报表框架　334
9.1　构建报表框架　335
9.1.1　抽象类基础　335
9.1.2　解决方案架构　337
9.1.3　数据库　339
9.1.4　ISearchControl接口　340
9.1.5　分页和IpaginationControl接口　340
9.1.6　ReportFramework抽象类　342
9.2　使用报表框架创建报表　361
9.2.1　使用ISearchControl接口构建搜索表单　362
9.2.2　创建分页导航组件　364
9.2.3　构建报表页面的布局　367
9.2.4　开发报表页面的后置代码　368
9.2.5　运行报表页面　372
9.3　小结　372
第10章　基于Web的向导：避免重复的数据输入　373
10.1　Wizard控件概述　373
10.1.1　Wizard控件的布局和组成　374
10.1.2　重要的向导属性和事件　375
10.1.3　把步骤添加到向导　377
10.1.4　控制向导的导航　379
10.1.5　使用模板　384
10.2　模糊音搜索　387
10.2.1　语音码和Soundex函数　388
10.2.2　Difference函数的语音接近匹配　388
10.3　创建添加雇员向导　389
10.3.1　业务对象和实用函数　389
10.3.2　添加雇员向导　396
10.3.3　整个试一下　402
10.4　小结　402
第11章　上传文件　403
11.1　数据库与文件系统的比较　403
11.1.1　事务支持　404
11.1.2　实施参照完整性以及避免破坏文件链接　404
11.1.3　安全考虑　405
11.1.4　性能　405
11.1.5　数据备份和复制　406
11.1.6　编程的复杂性　406
11.1.7　未来的考虑　406
11.2　上传文件　407
11.2.1　FileUpload控件　407
11.2.2　用FileUpload控件保存文件　409
11.3　上传多个文件　409
11.3.1　客户端的多个文件上传　410
11.3.2　在服务器端保存多个文件　412
11.4　在数据库中保存文件　414
11.4.1　创建一个数据库表来存储文件　414
11.4.2　从客户端传递文件到服务器　415
11.4.3　保存单个文件到数据库　415
11.4.4　保存多个文件到数据库　417
11.5　从数据库获取上传的文件　418
11.6　小结　420
第12章　安全和加密　421
12.1　基本安全概念　421
12.1.1　安全术语　422
12.1.2　验证与授权　423
12.1.3　最小权限访问　423
12.1.4　进程、线程和令牌　423
12.1.5　角色扮演　425
12.1.6　委托　425
12.1.7　访问令牌和角色扮演的例子　425
12.2　ASP.NET安全架构概览　427
12.2.1　通过浏览器发送最初的请求　429
12.2.2　基于IP地址或者域的IIS授权　429
12.2.3　IIS验证　429
12.2.4　ASP.NET?ISAPI扩展和ASP.NET工作进程　430
12.2.5　应用程序对象和请求的安全上下文　432
12.2.6　ASP.NET的验证模块　432
12.2.7　URL授权模块　433
12.2.8　文件授权模块　433
12.2.9　处理真正的请求　434
12.3　安全配置　435
12.3.1　IIS的安全配置　435
12.3.2　用NTFS权限加强文件安全性　442
12.3.3　ASP.NET的安全配置设置　445
12.4　加密敏感信息　453
12.4.1　加密配置设置　453
12.4.2　用单向加密散列数据　457
12.4.3　用双向加密实现数据的加密和解密　461
12.4.4　使用加密库　468
12.5　小结　469