第一部分 安全 2
第1章 使用Login控件 2
1.1 Login控件概览 3
1.2使用Login控件 6
1.2.1自动重定向用户到来源页面 8
1.2.2自动隐藏已验证用户的Login控件 8
1.2.3使用模板定制Login控件 10
1.2.4使用Login控件执行自定义身份验证 12
1.3使用CreateUserWizard控件 14
1.3.1配置自定义用户表单字段 16
1.3.2发送已创建用户电子邮件通知 17
1.3.3用户自动重定向来源页 20
1.3.4自动生成密码 21
1.3.5在CreateUserWizard控件中使用模板 26
1.3.6在CreateUserWizard控件中添加注册步骤 29
1.4使用LoginStatus控件 31
1.5使用LoginName控件 32
1.6使用ChangePassword控件 34
1.6.1发送电子邮件通知密码更改 35
1.6.2在ChangePassword控件中使用模板 36
1.7使用PasswordRecovery控件 39
1.7.1找回用户的原始密码 40
1.7.2要求安全提示问题和答案 41
1.7.3在PasswordRecovery控件中使用模板 42
1.8使用LoginView控件 44
1.9小结 47
第2章 使用ASP.NET Membership 48
2.1配置身份验证 48
2.1.1配置Forms身份验证 50
2.1.2使用无cookie的Forms身份验证 51
2.1.3在Forms身份验证中使用相对超时限制 52
2.1.4跨应用程序使用Forms身份验证 52
2.1.5跨域使用Forms身份验证 55
2.1.6使用FormsAuthentication类 56
2.1.7使用User类 60
2.2配置安全授权 60
2.2.1角色授权 62
2.2.2根据位置授权访问文件 62
2.2.3对图片以及其他文件类型进行访问授权 63
2.3使用ASP.NET Membership 64
2.3.1使用Membership API 65
2.3.2加密和散列用户密码 68
2.3.3修改用户密码条件 70
2.3.4锁定坏用户 71
2.3.5配置SQLMembershipProvider提供程序 73
2.3.6配置ActiveDirectoryMember-shipProvider 74
2.3.7创建自定义Membership提供程序 78
2.4使用角色管理器 80
2.4.1配置SqlRoleProvider 80
2.4.2配置WindowsTokenRole-Provider 85
2.4.3配置AuthorizationStoreRole-Provider 86
2.4.4在浏览器 cookie中缓存角色 88
2.4.5使用Roles API 89
2.5小结 91
第二部分 创建ASP.NET应用程序 94
第3章 维护应用程序状态 94
3.1使用浏览器cookie 94
3.1.1 cookie的安全性限制 95
3.1.2创建cookie 96
3.1.3读取cookie 98
3.1.4设置cookie属性 100
3.1.5删除cookie 101
3.1.6使用多值cookie 103
3.2使用Session状态 105
3.2.1在Session状态中保存数据库数据 107
3.2.2使用Session对象 109
3.2.3处理Session事件 110
3.2.4会话失效控制 112
3.2.5使用无Cookie的Session状态 112
3.2.6配置Session状态存储 114
3.2.7配置SQL Server Session状态 116
3.3使用用户配置文件 119
3.3.1创建用户配置文件组 122
3.3.2支持匿名用户 123
3.3.3合并匿名用户配置文件 126
3.3.4从自定义类继承Profile 126
3.3.5创建复杂Profile属性 128
3.3.6自动保存用户配置 133
3.3.7从组件访问用户配置 136
3.3.8使用配置文件管理器 138
3.3.9配置用户配置提供程序 140
3.3.10创建自定义用户配置提供程序 141
3.4小结 145
第4章 缓存应用程序页面和数据 146
4.1缓存概览 146
4.2使用页面输出缓存 147
4.2.1使用参数改变输出缓存 148
4.2.2基于控件变化的输出缓存 151
4.2.3基于头变化的输出缓存 153
4.2.4基于浏览器变化的输出缓存 154
4.2.5基于自定义函数变化的输出缓存 154
4.2.6设置缓存位置 156
4.2.7创建页面输出缓存文件依赖 157
4.2.8使用编程方式设置页面输出缓存过期 159
4.2.9以编程方式操作页面输出缓存 163
4.2.10创建页面输出缓存配置 164
4.3使用部分页面缓存 165
4.3.1使用缓存后替换 165
4.3.2用户控件缓存 169
4.3.3共享用户控件的输出缓存 171
4.3.4以编程方式处理用户控件缓存 172
4.3.5创建用户控件缓存的文件依赖 172
4.3.6缓存动态载入的用户控件 174
4.4使用数据源缓存 175
4.4.1使用绝对缓存过期策略 176
4.4.2使用弹性缓存过期策略 177
4.4.3使用objectDataSource控件缓存 179
4.4.4使用XmlDataSource控件缓存 180
4.4.5创建DataSource控件键依赖 181
4.5使用数据缓存 184
4.5.1使用缓存API 184
4.5.2添加项目到缓存 186
4.5.3使用绝对过期策略添加项目 186
4.5.4使用弹性过期策略添加项目到缓存 188
4.5.5使用依赖添加项目 189
4.5.6指定缓存项目优先级 191
4.5.7配置缓存 191
4.6使用SQL缓存依赖 193
4.6.1使用轮询SQL缓存依赖 193
4.6.2配置轮询SQL缓存依赖 194
4.6.3对页面输出缓存使用轮询SQL缓存依赖 195
4.6.4对数据源缓存使用轮询SQL缓存依赖 197
4.6.5对数据缓存使用轮询SQL缓存依赖 198
4.6.6使用推SQL缓存依赖 199
4.6.7配置推SQL缓存依赖 200
4.6.8对页面输出缓存使用推SQL缓存依赖 201
4.6.9对数据源缓存使用推SQL缓存依赖 203
4.6.10对数据缓存使用推SQL缓存依赖 205
4.7小结 206
第5章 多语言本地化应用程序 207
5.1设置当前文化 207
5.1.1手动设置文化 208
5.1.2自动检测文化 214
5.1.3在Web配置文件中设置文化 217
5.1.4文化和ASP.NET控件 218
5.2使用CultureInfo类 219
5.2.1使用CultureInfo类格式化字符串值 219
5.2.2比较和排序字符串值 221
5.3创建本地资源 221
5.3.1显式本地化表达式 222
5.3.2隐式本地化表达式 224
5.3.3对页面属性使用本地化资源 226
5.3.4以编程方式获取本地资源 227
5.4创建全局资源 228
5.4.1以编程方式获取全局资源 230
5.4.2使用强类型本地化表达式 231
5.5使用Localize控件 232
5.6小结 233
第6章 使用HTTP运行库 234
6.1创建自定义BuildProvider 234
6.1.1创建简单的BuildProvider 235
6.1.2创建数据访问组件Build-Provider 238
6.2创建自定义ExpressionBuilder 243
6.3创建HTTP处理程序 247
6.3.1创建一般处理程序 247
6.3.2实现IHttpHandler接口 250
6.3.3创建异步HTTP处理程序 254
6.4使用HTTP应用程序和HTTP模块 257
6.4.1创建Global.asax文件 258
6.4.2创建自定义HTTP模块 260
6.5小结 262
第7章 创建动态数据应用 263
7.1 ASP.NET动态数据介绍 263
7.2创建动态数据应用 264
7.3使用动态数据模板 267
7.3.1修改共享模板 267
7.3.2创建类型和实体特定的模板 268
7.4小结 270
第8章 创建ASP.NETMVC应用 271
8.1 ASP.NET MVC框架介绍 271
8.1.1模型 271
8.1.2视图 272
8.1.3控制器 272
8.2创建你的第一个ASP.NET MVC应用 272
8.3创建MVC页面 274
8.4接受窗体输入 276
8.5小结 277
第9章 配置应用程序 278
9.1网站配置概览 278
9.1.1使用Web站点管理工具 279
9.1.2使用ASP.NET的MMC嵌入式管理单元 280
9.1.3 ASP.NET配置节 281
9.1.4把配置设置应用到特定路径 282
9.1.5锁定配置文件 283
9.1.6添加自定义应用程序设置 285
9.1.7将配置设置放到外部文件 286
9.2使用配置API 287
9.2.1从当前应用程序读取配置节 288
9.2.2打开配置文件 291
9.2.3打开远程服务器上的配置文件 294
9.2.4使用Configuration类 296
9.2.5修改配置节 299
9.2.6准备创建新的网站 301
9.3创建自定义配置节 304
9.4创建加密的配置节 312
9.4.1使用aspnet_regiis工具加密配置节 313
9.4.2以编程方式加密配置节 313
9.4.3部署加密的Web配置文件 316
9.5小结 318
第10章 部署ASP.NETWeb应用 319
10.1打包Web应用 319
10.2使用Web.config转换 322
10.3部署数据库 323
10.4一键式发布Web应用 324
10.5小结 326
第三部分 构建自定义控件 328
第11章 构建自定义控件 328
11.1构建自定义控件概述 328
11.1.1构建完全生成控件 329
11.1.2构建组合控件 337
11.1.3构建混合控件 339
11.2视图状态和控件状态 344
11.2.1支持视图状态 344
11.2.2支持控件状态 346
11.3处理回传数据和事件 349
11.3.1处理回传数据 349
11.3.2处理回传事件 352
11.4使用控件属性集合 361
11.4.1使用ParseChildren特性 361
11.4.2使用AddParsedSubobject()方法 367
11.4.3使用ControlBuilder 367
11.5构建更好的设计器体验 371
11.5.1给控件应用设计时特性 371
11.5.2创建控件设计器 374
11.5.3创建ContainerControl-Designer 374
11.5.4添加智能标签 377
11.6小结 381
第12章 创建模板化数据绑定控件 382
12.1创建模板化控件 382
12.1.1实现ITemplate接口 382
12.1.2创建默认模板 385
12.1.3支持简化的数据绑定 389
12.1.4支持双向数据绑定 392
12.2创建模板化数据绑定控件 396
12.3小结 401
第四部分 ASP.NET AJAX 404
第13章 使用服务器端ASP.NETAJAX 404
13.1 Ajax概况 404
13.2服务器端Ajax与客户端Ajax 405
13.3调试Ajax应用 406
13.4使用UpdatePanel控件 407
13.4.1指定UpdatePanel触发器 414
13.4.2嵌套的UpdatePanel控件 415
13.4.3以编程方式更新Update-Panel 419
13.4.4 UpdatePanel与JavaScript 421
13.4.5 UpdatePanel服务器端页面执行生命周期 423
13.4.6 UpdatePanel客户端页面执行生命周期 425
13.4.7取消当前异步回传 430
13.4.8中断上一个异步回传 432
13.4.9在一次异步回传中传递额外的信息 434
13.4.10优雅地处理UpdatePanel错误 436
13.4.11 UpdatePanel的性能 440
13.5使用Timer控件 443
13.6使用UpdateProgress控件 446
13.7小结 448
第14章 使用ASP.NET AJAX Control Toolkit 449
14.1使用ASP.NETAJAX Control Toolkit 449
14.2 Toolkit控件概述 452
14.3使用AutoComplete控件 453
14.3.1通过页面方法使用AutoCompleteExtender 454
14.3.2通过Web服务方法使用AutoCompleteExtender 456
14.3.3在AutoCompleteExtender中使用文本/值对 458
14.4使用DragPanel控件 461
14.5使用FilteredTextBox控件 465
14.6使用MaskedEdit控件 466
14.7使用Animation控件 468
14.8使用UpdatePanelAnimation控件 472
14.9小结 475
第15章 用jQuery实现客户端Ajax 476
15.1 jQuery介绍 476
15.1.1使用jQuery库 476
15.1.2创建jQuery文件 478
15.1.3$方法和$(document).ready() 479
15.1.4 jQuery选择器 480
15.2从客户端调用Web服务 481
15.2.1调用外部的Web服务 481
15.2.2调用静态的页面方法 484
15.3小结 485