编写OracleMembershipProvider,让SharePoint2007使用Oralce中的用户数据实现Form验证。 (第四天)
继续完善代码,以下代码与之前的比较多了如下特性:
* 所有属性均可在web.config中配置
* 数据库操作异常写入日志
* 多了一个LogTools类,用于日志相关操作
* 自定义多个属性增加灵活性,比如可以用任意表名,
* 确定了表结构,并给出Oracle下的表创建语句( 使用本语句需要做简单修改,替换用户和表空间名)
(因为调试部署费时,所以代码均未经过测试,待代码编写完整后再测试)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
OracleMembershipProvider
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Web;
5
using System.Web.Security;
6
using System.Data;
7
using System.Data.OleDb;
8
using System.Collections;
9
using System.Configuration;
10![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*表创建语句 (创建于:Oracle 8i)
12
CREATE TABLE "ANTUUSER"."SHAREPOINTUSERS"("PKID" VARCHAR2(50)
13
NOT NULL, "USERNAME" VARCHAR2(255) NOT NULL, "APPLICATIONNAME"
14
VARCHAR2(255) NOT NULL, "EMAIL" VARCHAR2(128) NOT NULL,
15
"COMMENT" VARCHAR2(255) NOT NULL, "PASSWORD" VARCHAR2(128) NOT
16
NULL, "PASSWORDQUESTION" VARCHAR2(255) NOT NULL,
17
"PASSWORDANSWER" VARCHAR2(255) NOT NULL, "ISAPPROVED" NUMBER(1)
18
NOT NULL, "LASTACTIVITYDATE" DATE NOT NULL, "LASTLOGINDATE" DATE
19
NOT NULL, "LASTPASSWORDCHANGEDATE" DATE NOT NULL, "CREATIONDATE"
20
DATE NOT NULL, "ISONLINE" NUMBER(1) NOT NULL, "ISLOCKEDOUT"
21
NUMBER(1) NOT NULL, "LASTLOCKEDOUTDATE" DATE NOT NULL,
22
"FAILEDPWDATTEMPTCOUNT" NUMBER(5) NOT NULL,
23
"FAILEDPWDATTEMPTWINSTART" DATE NOT NULL,
24
"FAILEDPWDANSWERATTEMPTCOUNT" NUMBER(5) NOT NULL,
25
"FAILEDPWDANSWERATTEMPTWINSTART" DATE NOT NULL)
26
*/
27
namespace BoooLee
28![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
29
public class OracleMembershipProvider : MembershipProvider
30![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
31
//OracleTools
32
private OracleTools OT = null;
33
34
//自定义属性
35
private string _UsersTableName;
36
//Oracle数据库连接串
37
private string _ConnectionString;
38
//是否允许事件日志
39
private bool _EnableEventLog;
40![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
//MembershipProvider接口属性,用于存放config.web中的MembershipProvider配置属性。
42
//使用自定义成员资格提供程序的应用程序的名称。
43
private string _ApplicationName;
44
//指示成员资格提供程序是否配置为允许用户重置其密码。
45
private bool _EnablePasswordReset;
46
//指示成员资格提供程序是否配置为允许用户检索其密码。
47
private bool _EnablePasswordRetrieval;
48
//获取锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数。
49
private int _MaxInvalidPasswordAttempts;
50
//获取有效密码中必须包含的最少特殊字符数。
51
private int _MinRequireNonAlphanumericCharacters;
52
//获取密码所要求的最小长度。
53
private int _MinRequiredPasswordLength;
54
//获取在锁定成员资格用户之前允许的最大无效密码或无效密码提示问题答案尝试次数的分钟数。
55
private int _PasswordAttemptWindow;
56
//获取一个值,该值指示在成员资格数据存储区中存储密码的格式。
57
private MembershipPasswordFormat _PasswordFormat;
58
//获取用于计算密码的正则表达式。
59
private string _PasswordStrengthRegularExpression;
60
//获取一个值,该值指示成员资格提供程序是否配置为要求用户在进行密码重置和检索时回答密码提示问题。
61
private bool _RequiresQuestionAndAnswer;
62
//获取一个值,指示成员资格提供程序是否配置为要求每个用户名具有唯一的电子邮件地址。
63
private bool _RequiresUniqueEmail;
64
65![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
66
摘要:
67
初始化提供程序。
68
69
参数:
70
config: 名称/值对的集合,表示在配置中为该提供程序指定的、提供程序特定的属性。
71
name: 该提供程序的友好名称。
72
*/
73
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
74![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
75
base.Initialize(name, config);
76
77
//读取MembershipProvider接口属性配置
78
_ApplicationName = GetConfigValue(config["ConnectionString"],System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);
79
_EnablePasswordReset = Convert.ToBoolean(GetConfigValue(config["EnablePasswordReset"], "false"));
80
_EnablePasswordRetrieval = Convert.ToBoolean(GetConfigValue(config["EnablePasswordRetrieval"], "false"));
81
_MaxInvalidPasswordAttempts=Convert.ToInt32(GetConfigValue(config["MaxInvalidPasswordAttempts"],"5");
82
_MinRequireNonAlphanumericCharacters=Convert.ToInt32(GetConfigValue(config["MinRequiredNonAlphanumericCharacters"],"1");
83
_MinRequiredPasswordLength=Convert.ToInt32(GetConfigValue(config["MinRequiredPasswordLength"],"7");
84
_PasswordAttemptWindow=Convert.ToInt32(GetConfigValue(config["PasswordAttemptWindow"],"10");
85
_PasswordFormat=(MembershipPasswordFormat)GetConfigValue(config["PasswordFormat"],MembershipPasswordFormat.Clear);
86
_PasswordStrengthRegularExpression=GetConfigValue(config["PasswordStrengthRegularExpression"],""));
87
_RequiresQuestionAndAnswer=Convert.ToBoolean(GetConfigValue(config["RequiresQuestionAndAnswer"],"false"));
88
_RequiresUniqueEmail=Convert.ToBoolean(GetConfigValue(config["RequiresUniqueEmail"],"true"));
89
90
//读取自定义属性
91
ConnectionStringSettings ConnectionStringSetting=ConfigurationManager.ConnectionStrings[config["ConnectionString"]];
92
_ConnectionString=ConnectionStringSetting.ConnectionString;
93
_UsersTableName=GetConfigValue(config["UsersTableName"],"SHAREPOINTUSERS");
94
_EnableEventLog=Convert.ToBoolean(GetConfigValue(config["EnableEventLog"],"true"];
95
//初始化OT
96
OT = new OracleTools();
97
OT.ConnectionString = _ConnectionString;
98![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
//为OT分配日志记录器
100
LogTools lt = new LogTools();
101
lt.EventLog = "Application";
102
lt.EventSource = "OracleMembershipProvider";
103
OT.LogTool = lt;
104
OT.EnableEventlog=_EnableEventLog;
105
}
106![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
108
摘要:
109
使用自定义成员资格提供程序的应用程序的名称。
110
111
返回值:
112
使用自定义成员资格提供程序的应用程序的名称。
113
*/
114
public override string ApplicationName
115![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
116
get
117![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
118
return _ApplicationName;
119
}
120
set
121![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
122
;
123
}
124
}
125![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
127
摘要:
128
处理更新成员资格用户密码的请求。
129![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
参数:
131
newPassword: 指定的用户的新密码。
132
oldPassword: 指定的用户的当前密码。
133
username: 为其更新密码的用户。
134![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
返回值:
136
如果密码更新成功,则为 true;否则为 false。
137
*/
138
public override bool ChangePassword(string username, string oldPassword, string newPassword)
139![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
140
string SqlString = "";
141![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
142
//更改用户密码
143
if (UserExist(username,oldPassword)>0)
144![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
145
SqlString = string.Format("update {0} set password={1} where username='{2}' and password='{3}'",_TableName, newPassword, username, oldPassword);
146
return OT.RunSqlNonQuery(SqlString);
147
}
148
149
return false;
150
}
151![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
153
摘要:
154
处理更新成员资格用户的密码提示问题和答案的请求。
155![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
参数:
157
newPasswordQuestion: 指定的用户的新密码提示问题。
158
newPasswordAnswer: 指定的用户的新密码提示问题答案。
159
username: 要为其更改密码提示问题和答案的用户。
160
password: 指定的用户的密码。
161![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
162
返回值:
163
如果成功更新密码提示问题和答案,则为 true;否则,为 false。
164
*/
165
public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer)
166![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
167
string SqlString = "";
168![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
//更改用户密码问题和密码答案
170
if (UserExist(username,password)>0)
171![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
172
SqlString = string.Format("update {0} set question={1} , answer={2} where username='{3}' and password='{4}'", _TableName,newPasswordQuestion, newPasswordAnswer, username, password);
173
return OT.RunSqlNonQuery(SqlString);
174
}
175![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
return false;
177
}
178![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
180
摘要:
181
将新的成员资格用户添加到数据源。
182![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
参数:
184
isApproved: 是否允许验证新用户。
185
passwordAnswer: 新用户的密码提示问题答案。
186
username: 新用户的用户名。
187
providerUserKey: 成员资格数据源中该用户的唯一标识符。
188
password: 新用户的密码。
189
passwordQuestion: 新用户的密码提示问题。
190
email: 新用户的电子邮件地址。
191
status: 一个 System.Web.Security.MembershipCreateStatus 枚举值,指示是否已成功创建用户。
192![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
193
返回值:
194
一个用新创建的用户的信息填充的 System.Web.Security.MembershipUser 对象。
195
*/
196
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
197![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
198
//TODO 实现创建用户代码
199
throw new Exception("The method or operation is not implemented.");
200
}
201![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
202![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
203
摘要:
204
从成员资格数据源删除一个用户。
205![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
206
参数:
207
username: 要删除的用户的名称。
208
deleteAllRelatedData: 如果为 true,则从数据库中删除与该用户相关的数据;如果为 false,则将与该用户相关的数据保留在数据库。
209![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
210
返回值:
211
如果用户被成功删除,则为 true;否则为 false。
212
*/
213
public override bool DeleteUser(string username, bool deleteAllRelatedData)
214![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
215
string SqlString = "";
216![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
217
//删除用户
218
if (UserExist(username)>0)
219![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
220
SqlString = string.Format("delete from {0} where username='{1}'",_TableName, username);
221
return OT.RunSqlNonQuery(SqlString);
222
}
223![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
return false;
225
}
226![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
228
摘要:
229
指示成员资格提供程序是否配置为允许用户重置其密码。
230![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
231
返回值:
232
如果成员资格提供程序支持密码重置,则为 true;否则为 false。默认为 true。
233
*/
234
public override bool EnablePasswordReset
235![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
236
get
237![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
238
return _EnablePasswordReset;
239
}
240
}
241
242![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
243
摘要:
244
指示成员资格提供程序是否配置为允许用户检索其密码。
245![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
返回值:
247
如果成员资格提供程序配置为支持密码检索,则为 true,否则为 false。默认为 false。
248
*/
249
public override bool EnablePasswordRetrieval
250![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
251
get
252![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
253
return _EnablePasswordRetrieval;
254
}
255
}
256![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
258
摘要:
259
获取一个成员资格用户的集合,这些用户的电子邮件地址包含要匹配的指定电子邮件地址。
260![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
参数:
262
totalRecords: 匹配用户的总数。
263
pageIndex: 要返回的结果页的索引。pageIndex 是从零开始的。
264
emailToMatch: 要搜索的电子邮件地址。
265
pageSize: 要返回的结果页的大小。
266![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
返回值:
268
包含一页 pageSizeSystem.Web.Security.MembershipUser 对象的 System.Web.Security.MembershipUserCollection 集合,这些对象从 pageIndex 指定的页开始。
269
*/
270
public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
271![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
272
string SqlString = "";
273
MembershipUserCollection muc = new MembershipUserCollection();
274
totalRecords = UserExistByMail(emailToMatch);
275
if (totalRecords>0)
276![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
277
SqlString = string.Format("select * from {0} where email='{1}'", _TableName,emailToMatch);
278
muc = ToMembershipUserCollection(OT.RunSqlDataTable(SqlString));
279
}
280
return muc;
281
}
282![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
283![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
284
摘要:
285
获取一个成员资格用户的集合,这些用户的用户名包含要匹配的指定用户名。
286![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
参数:
288
totalRecords: 匹配用户的总数。
289
pageIndex: 要返回的结果页的索引。pageIndex 是从零开始的。
290
usernameToMatch: 要搜索的用户名。
291
pageSize: 要返回的结果页的大小。
292![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
返回值:
294
包含一页 pageSizeSystem.Web.Security.MembershipUser 对象的 System.Web.Security.MembershipUserCollection 集合,这些对象从 pageIndex 指定的页开始。
295
*/
296
public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
297![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
298
string SqlString = "";
299
MembershipUserCollection muc = new MembershipUserCollection();
300
totalRecords = UserExist(usernameToMatch);
301
if (totalRecords > 0)
302![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
303
SqlString = string.Format("select * from {0} where username='{1}'", _TableName,usernameToMatch);
304
muc=ToMembershipUserCollection( OT.RunSqlDataTable(SqlString));
305
}
306
return muc;
307
}
308![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
309![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
310
摘要:
311
获取数据源中的所有用户的集合,并显示在数据页中。
312![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
313
参数:
314
totalRecords: 匹配用户的总数。
315
pageIndex: 要返回的结果页的索引。pageIndex 是从零开始的。
316
pageSize: 要返回的结果页的大小。
317![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
318
返回值:
319
包含一页 pageSizeSystem.Web.Security.MembershipUser 对象的 System.Web.Security.MembershipUserCollection 集合,这些对象从 pageIndex 指定的页开始。
320
*/
321
public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
322![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
323
string SqlString = "";
324
MembershipUserCollection muc = new MembershipUserCollection();
325
totalRecords = UsersTotalRecords();
326
if (totalRecords > 0)
327![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
328
SqlString =string.Format( "select * from {0}",_TableName);
329
muc = ToMembershipUserCollection(OT.RunSqlDataTable(SqlString));
330
}
331
return muc;
332
}
333![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
334![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
335
摘要:
336
获取当前访问该应用程序的用户数。
337![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
338
返回值:
339
当前访问该应用程序的用户数。
340
*/
341
public override int GetNumberOfUsersOnline()
342![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
343
//TODO 获取在线人数
344
throw new Exception("The method or operation is not implemented.");
345
}
346![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
347![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
348
摘要:
349
从数据源获取指定用户名所对应的密码。
350![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
351
参数:
352
username: 为其检索密码的用户。
353
answer: 用户的密码提示问题答案。
354![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
355
返回值:
356
指定用户名所对应的密码。
357
*/
358
public override string GetPassword(string username, string answer)
359![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
360
string SqlString = "";
361
string password="";
362
if (UserExist(username) > 0)
363![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
364
SqlString = string.Format("select password from {0} where username='{1}' and answer='{2}'", _TableName,username, answer);
365
password = OT.RunSqlScalar(SqlString);
366
}
367
return password;
368
}
369![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
370![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
371
摘要:
372
从数据源获取用户的信息。提供一个更新用户最近一次活动的日期/时间戳的选项。
373![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
374
参数:
375
username: 要获取其信息的用户名。
376
userIsOnline: 如果为 true,则更新用户最近一次活动的日期/时间戳;如果为 false,则返回用户信息,但不更新用户最近一次活动的日期/时间戳。
377![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
378
返回值:
379
用数据源中指定用户的信息填充的 System.Web.Security.MembershipUser 对象。
380
*/
381
public override MembershipUser GetUser(string username, bool userIsOnline)
382![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
383
string SqlString = "";
384
MembershipUser mu = null;
385![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
386
if (UserExist(username) > 0)
387![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
388
SqlString = string.Format("select * from {0} where username='{1}'", _TableName,username);
389
mu=ToMembershipUser(OT.RunSqlDataTable(SqlString).Rows[0]);
390
}
391![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
392
return mu;
393
}
394![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
395![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
396
摘要:
397
根据成员资格用户的唯一标识符从数据源获取该用户的信息。提供一个更新用户最近一次活动的日期/时间戳的选项。
398![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
399
参数:
400
providerUserKey: 要获取其信息的成员资格用户的唯一标识符。
401
userIsOnline: 如果为 true,则更新用户最近一次活动的日期/时间戳;如果为 false,则返回用户信息,但不更新用户最近一次活动的日期/时间戳。
402![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
返回值:
404
用数据源中指定用户的信息填充的 System.Web.Security.MembershipUser 对象。
405
*/
406
public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
407![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
408
string SqlString = "";
409
MembershipUser mu = new MembershipUser();
410![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
if (UserExist(username) > 0)
412![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
413
SqlString = string.Format("select * from {0} where provideruserkey='{1}'", _TableName,providerUserKey.ToString());
414
mu = ToMembershipUser(OT.RunSqlDataTable(SqlString).Rows[0]);
415
}
416![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
return mu;
418
}
419![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
420
public override string GetUserNameByEmail(string email)
421![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
422
throw new Exception("The method or operation is not implemented.");
423
}
424![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
425
public override int MaxInvalidPasswordAttempts
426![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
427
get
428![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
429
return _MaxInvalidPasswordAttempts;
430
}
431
}
432![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
433
public override int MinRequiredNonAlphanumericCharacters
434![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
435
get
436![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
437
return _MinRequireNonAlphanumericCharacters;
438
}
439![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
440
}
441![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
442
public override int MinRequiredPasswordLength
443![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
444
get
445![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
446
return _MinRequiredPasswordLength;
447
}
448
}
449![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
450
public override int PasswordAttemptWindow
451![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
452
get
453![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
454
return _PasswordAttemptWindow;
455
}
456
}
457![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
458
public override MembershipPasswordFormat PasswordFormat
459![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
460
get
461![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
462
return _PasswordFormat;
463
}
464
}
465![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
466
public override string PasswordStrengthRegularExpression
467![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
468
get
469![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
470
return PasswordStrengthRegularExpression;
471
}
472
}
473![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
474
public override bool RequiresQuestionAndAnswer
475![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
476
get
477![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
478
return RequiresQuestionAndAnswer;
479
}
480
}
481![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
482
public override bool RequiresUniqueEmail
483![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
484
get
485![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
486
return RequiresUniqueEmail;
487
}
488
}
489![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
490
public override string ResetPassword(string username, string answer)
491![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
492
throw new Exception("The method or operation is not implemented.");
493
}
494![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
495
public override bool UnlockUser(string userName)
496![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
497
throw new Exception("The method or operation is not implemented.");
498
}
499![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
500
public override void UpdateUser(MembershipUser user)
501![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
502
throw new Exception("The method or operation is not implemented.");
503
}
504![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
505
public override bool ValidateUser(string username, string password)
506![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
507
throw new Exception("The method or operation is not implemented.");
508
}
509![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
510![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
非MembershipProvider成员#region 非MembershipProvider成员
511![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
512![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
513
摘要:
514
判断用户是否存在
515![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
516
参数:
517
username:用户名
518![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
519
返回值:
520
找到用户返回true,没有找到用户false
521
*/
522
private int UserExist(string username)
523![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
524
string SqlString = "";
525
string r = "";
526
int Count = 0;
527![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
528
SqlString = string.Format("select count(*) from {0} where username='{1}'", _TableName,username);
529
r = OT.RunSqlScalar(SqlString);
530
try
531![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
532
Count = int.Parse(r);
533
}
534
catch (Exception)
535![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
536
Count = 0;
537
}
538![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
539
return Count;
540
}
541![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
542![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
543
摘要:
544
判断用户是否存在
545![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
546
参数:
547
username:用户名
548
password:用户密码
549![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
550
返回值:
551
找到用户的用户数。
552
*/
553
private int UserExist(string username, string password)
554![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
555
string SqlString = "";
556
string r = "";
557
int Count = 0;
558![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
559
SqlString = string.Format("select count(*) from {0} where username='{1}' and password='{2}'",_TableName, username,password);
560
r = OT.RunSqlScalar(SqlString);
561
try
562![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
563
Count = int.Parse(r);
564
}
565
catch (Exception)
566![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
567
Count = 0;
568
}
569![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
570
return Count;
571
}
572![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
573![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
574
摘要:
575
判断用户是否存在
576![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
577
参数:
578
email:用户名
579![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
580
返回值:
581
找到用户的用户数。
582
*/
583
private int UserExistByMail(string email)
584![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
585
string SqlString = "";
586
string r = "";
587
int Count = 0;
588![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
589
SqlString = string.Format("select count(*) from {0} where email='{1}'", _TableName,email);
590
r = OT.RunSqlScalar(SqlString);
591
try
592![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
593
Count = int.Parse(r);
594
}
595
catch (Exception)
596![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
597
Count = 0;
598
}
599![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
600
return Count;
601
}
602![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
603![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
604
摘要:
605
转换用户数据表为MembershipUserCollection
606![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
607
参数:
608
userstable:用户表
609![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
610
返回值:
611
返回包含用户数据的MembershipUserCollection。
612
*/
613
private MembershipUserCollection ToMembershipUserCollection(DataTable userstable)
614![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
615
MembershipUserCollection muc = new MembershipUserCollection();
616![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
617
foreach (DataRow dr in userstable.Rows)
618![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
619
muc.Add(ToMembershipUser(dr));
620
}
621![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
622
return muc;
623
}
624![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
625![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
626
摘要:
627
获得用户总数
628![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
629
返回值:
630
返回用户数。
631
*/
632
private int UsersTotalRecords()
633![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
634
string SqlString = "";
635
string r = "";
636
int Count = 0;
637![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
638
SqlString = string.Format("select count(*) from {0}",_TableName);
639
r = OT.RunSqlScalar(SqlString);
640
try
641![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
642
Count = int.Parse(r);
643
}
644
catch (Exception)
645![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
646
Count = 0;
647
}
648![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
649
return Count;
650
}
651![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
652![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
653
摘要:
654
转换用户数据表为MembershipUserCollection
655![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
656
参数:
657
usersrecord:用户记录
658![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
659
返回值:
660
返回包含用户数据的MembershipUser。
661
*/
662
private MembershipUser ToMembershipUser(DataRow usersrecord)
663![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
664
MembershipUser mu = new MembershipUser();
665
try
666![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
667
mu.UserName = usersrecord["username"];
668
mu.Email = usersrecord["email"];
669
mu.PasswordQuestion = usersrecord["question"];
670
}
671
catch (Exception)
672![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
673
}
674
return mu;
675
}
676![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
677![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
678
摘要:
679
获取配置文件
680![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
681
参数:
682
ConfigValue:配置文件中的参数设置
683
DefaultValue:缺省值
684
685
返回值:
686
如果ConfigValue值有效则返回ConfigValue,否则返回DefaultValue。
687
*/
688
private string GetConfigValue(string ConfigValue, string DefaultValue)
689![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
690
if (string.IsNullOrEmpty(ConfigValue))
691
return DefaultValue;
692
return ConfigValue;
693
}
694
#endregion
695
696
}
697
}
698
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
OracleTools
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Data;
5
using System.Data.OleDb;
6![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
namespace BoooLee
8![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
9
class OracleTools
10![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
11![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
12
/// 私有变量
13
/// </summary>
14
private string _ConnectionString = ""; //数据库连接串
15![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
17
/// 日志记录器
18
/// </summary>
19
private LogTools _LogTools = null;
20![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
22
/// 是否允许记录日志
23
/// </summary>
24
private bool _EnableEventLog = false;
25![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
27
/// 是否允许记录日志
28
/// </summary>
29
public bool EnableEventlog
30![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
31
get
32![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
33
return _EnableEventLog;
34
}
35![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
set
37![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
38
_EnableEventLog = value;
39
}
40
}
41![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
43
/// 日志记录器
44
/// </summary>
45
public LogTools LogTool
46![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
47
get
48![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
49
return _LogTools;
50
}
51![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
set
53![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
54
_LogTools = value;
55
}
56
}
57![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
58
/// 数据库连接串
59
/// </summary>
60
public string ConnectionString
61![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
62
get
63![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
64
return _ConnectionString;
65
}
66![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
set
68![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
69
_ConnectionString=value;
70
}
71
}
72![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
74
/// 运行无返回值的Sql语句。
75
/// </summary>
76
/// <param name="SqlString">指定要运行的Sql语句。</param>
77
/// <param name="Conn">指定数据库连接。</param>
78
/// <returns>成功返回true,失败返回false。</returns>
79
public bool RunSqlNonQuery(string SqlString)
80![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
81
OleDbConnection Conn=null;
82![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
try
84![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
85
using (OleDbCommand Command = new OleDbCommand())
86![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
87
Command.CommandText = SqlString;
88
Conn = GetConnection();
89
Conn.Open();
90
Command.Connection = Conn;
91
Command.ExecuteNonQuery();
92
}
93
return true;
94
}
95
catch (Exception ex)
96![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
97
if (_LogTools != null && _EnableEventLog)
98![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
_LogTools.WriteToEventLog(ex, string.Format("RunSqlNonQuery(\"
{0}\")", SqlString));
99
return false;
100
}
101
finally
102![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
103
//关闭数据库连接
104
if (Conn != null && Conn.State==ConnectionState.Open)
105
Conn.Close();
106
}
107
}
108![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
110
/// 运行返回一个值的Select语句。
111
/// </summary>
112
/// <param name="SqlString">指定要运行的Sql语句。</param>
113
/// <param name="Conn">指定数据库连接。</param>
114
/// <returns>成功返回Select语句结果,失败返回空字符串。</returns>
115
public string RunSqlScalar(string SqlString)
116![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
117
OleDbConnection Conn = null;
118![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
try
120![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
121
Conn = GetConnection();
122
Conn.Open();
123![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
using (OleDbCommand Command = new OleDbCommand())
125![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
126
Command.CommandText = SqlString;
127
Command.Connection = Conn;
128
return Command.ExecuteScalar().ToString();
129
}
130
}
131
catch (Exception ex)
132![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
133
if (_LogTools != null && _EnableEventLog)
134![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
_LogTools.WriteToEventLog(ex, string.Format("RunSqlScalar(\"
{0}\")",SqlString));
135
return "";
136
}
137
finally
138![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
139
if (Conn != null && Conn.State == ConnectionState.Open)
140
Conn.Close();
141
}
142
}
143![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
145
/// 运行返回DataTable的Sql语句。
146
/// </summary>
147
/// <param name="SqlString">指定要运行的Sql语句。</param>
148
/// <param name="Conn">指定数据库连接。</param>
149
/// <returns>成功返回Select语句结果DataTable。</returns>
150
public DataTable RunSqlDataTable(string SqlString)
151![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
152
OleDbConnection Conn = null;
153![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
154
try
155![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
156
using (OleDbDataAdapter DataAdapter = new OleDbDataAdapter())
157![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
158
Conn = GetConnection();
159
Conn.Open();
160
OleDbCommand SC = new OleDbCommand();
161
SC.CommandText = SqlString;
162
SC.Connection = Conn;
163
DataAdapter.SelectCommand = SC;
164
DataTable dt = new DataTable();
165
DataAdapter.Fill(dt);
166
return dt;
167
}
168
}
169
catch (Exception ex)
170![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
171
if (_LogTools != null && _EnableEventLog)
172![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
_LogTools.WriteToEventLog(ex, string.Format("RunSqlDataTable(\"
{0}\")", SqlString));
173
return new DataTable();
174
}
175
finally
176![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
177
if (Conn != null && Conn.State == ConnectionState.Open)
178
Conn.Close();
179
}
180
}
181![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
182![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
183
/// 返回一个OleDbConnection对象。
184
/// </summary>
185
/// <returns>成功返回的OleDbConnection对象,失败返回null。</returns>
186
public OleDbConnection GetConnection()
187![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
188
try
189![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
190
OleDbConnection result = new OleDbConnection();
191
result.ConnectionString = _ConnectionString;
192
return result;
193
}
194
catch (Exception ex)
195![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
196
if (_LogTools != null && _EnableEventLog)
197
_LogTools.WriteToEventLog(ex, "GetConnection()");
198
return null;
199
}
200
}
201
}
202
}
203
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
LogTools
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
namespace BoooLee
6![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
7
class LogTools
8![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
9
private string _eventSource = "";
10
private string _eventLog = "";
11![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
14
/// 事件发生源
15
/// </summary>
16
public string EventSource
17![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
18
get
19![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
20
return _eventSource;
21
}
22![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
set
24![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
25
_eventSource = value;
26
}
27
}
28![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
30
/// 日志名
31
/// </summary>
32
public string EventLog
33![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
34
get
35![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
36
return _eventLog;
37
}
38![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
set
40![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
41
_eventLog = value;
42
}
43
}
44![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
public void WriteToEventLog(Exception e, string action)
46![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
47
EventLog log = new EventLog();
48
log.Source = _eventSource;
49
log.Log = _eventLog;
50![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
string message = "数据源发生异常.\n\n";
52
message += "操作: " + action + "\n\n";
53
message += "异常: " + e.ToString();
54![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
log.WriteEntry(message);
56
}
57
}
58
}
59
随着编写的深入,从起初的只想学习一下MemshipProvider知识,变成了现在的要写一个实用的OracleMemshipProvider,这一切离不开关注本blog的朋友们,希望有兴趣的朋友参与进来,编写出基于其他数据库平台的MemshipProvider。比如:MySQLMemshipProvider等。
* 所有属性均可在web.config中配置
* 数据库操作异常写入日志
* 多了一个LogTools类,用于日志相关操作
* 自定义多个属性增加灵活性,比如可以用任意表名,
* 确定了表结构,并给出Oracle下的表创建语句( 使用本语句需要做简单修改,替换用户和表空间名)
(因为调试部署费时,所以代码均未经过测试,待代码编写完整后再测试)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
133
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
134
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
138
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
140
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
142
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
143
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
145
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
146
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
147
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
148
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
150
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
151
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
153
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
154
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
155
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
158
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
160
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
162
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
164
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
165
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
167
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
170
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
172
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
173
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
175
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
177
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
178
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
180
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
181
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
182
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
184
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
185
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
186
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
187
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
188
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
190
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
192
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
193
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
194
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
195
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
196
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
198
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
201
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
202
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
203
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
204
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
205
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
206
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
208
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
209
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
210
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
211
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
212
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
213
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
214
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
215
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
216
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
217
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
218
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
220
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
221
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
222
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
223
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
225
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
226
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
228
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
229
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
230
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
231
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
232
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
233
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
234
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
236
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
237
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
238
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
240
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
241
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
242
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
243
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
244
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
245
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
247
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
248
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
249
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
250
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
251
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
252
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
253
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
254
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
255
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
256
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
258
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
260
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
262
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
264
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
265
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
266
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
268
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
270
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
271
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
272
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
274
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
276
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
277
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
278
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
280
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
281
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
282
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
283
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
284
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
285
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
286
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
288
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
289
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
290
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
291
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
292
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
294
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
295
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
296
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
298
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
299
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
300
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
301
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
302
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
303
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
304
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
305
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
306
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
307
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
308
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
309
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
310
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
311
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
312
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
313
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
314
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
315
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
316
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
317
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
318
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
319
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
320
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
321
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
322
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
323
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
324
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
325
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
326
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
327
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
328
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
329
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
330
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
331
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
332
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
333
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
334
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
335
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
336
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
337
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
338
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
339
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
340
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
341
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
342
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
343
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
344
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
345
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
346
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
347
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
348
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
349
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
350
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
351
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
352
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
353
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
354
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
355
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
356
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
357
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
358
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
359
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
360
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
361
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
362
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
363
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
364
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
365
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
366
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
367
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
368
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
369
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
370
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
371
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
372
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
373
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
374
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
375
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
376
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
377
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
378
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
379
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
380
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
381
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
382
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
383
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
384
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
385
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
386
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
387
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
388
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
389
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
390
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
391
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
392
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
393
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
394
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
395
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
396
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
397
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
398
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
399
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
400
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
401
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
402
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
404
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
405
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
406
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
407
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
408
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
409
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
410
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
412
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
413
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
414
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
415
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
416
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
418
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
419
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
420
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
421
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
422
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
423
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
424
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
425
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
426
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
427
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
428
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
429
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
430
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
431
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
432
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
433
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
434
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
435
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
436
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
437
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
438
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
439
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
440
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
441
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
442
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
443
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
444
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
445
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
446
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
447
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
448
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
449
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
450
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
451
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
452
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
453
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
454
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
455
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
456
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
457
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
458
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
459
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
460
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
461
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
462
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
463
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
464
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
465
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
466
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
467
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
468
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
469
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
470
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
471
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
472
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
473
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
474
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
475
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
476
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
477
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
478
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
479
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
480
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
481
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
482
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
483
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
484
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
485
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
486
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
487
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
488
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
489
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
490
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
491
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
492
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
493
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
494
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
495
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
496
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
497
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
498
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
499
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
500
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
501
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
502
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
503
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
504
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
505
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
506
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
507
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
508
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
509
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
510
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
511
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
512
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
513
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
514
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
515
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
516
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
517
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
518
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
519
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
520
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
521
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
522
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
523
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
524
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
525
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
526
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
527
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
528
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
529
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
530
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
531
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
532
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
533
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
534
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
535
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
536
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
537
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
538
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
539
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
540
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
541
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
542
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
543
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
544
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
545
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
546
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
547
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
548
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
549
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
550
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
551
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
552
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
553
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
554
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
555
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
556
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
557
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
558
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
559
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
560
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
561
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
562
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
563
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
564
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
565
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
566
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
567
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
568
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
569
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
570
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
571
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
572
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
573
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
574
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
575
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
576
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
577
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
578
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
579
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
580
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
581
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
582
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
583
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
584
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
585
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
586
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
587
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
588
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
589
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
590
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
591
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
592
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
593
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
594
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
595
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
596
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
597
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
598
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
599
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
600
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
601
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
602
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
603
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
604
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
605
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
606
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
607
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
608
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
609
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
610
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
611
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
612
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
613
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
614
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
615
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
616
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
617
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
618
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
619
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
620
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
621
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
622
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
623
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
624
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
625
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
626
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
627
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
628
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
629
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
630
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
631
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
632
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
633
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
634
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
635
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
636
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
637
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
638
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
639
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
640
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
641
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
642
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
643
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
644
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
645
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
646
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
647
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
648
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
649
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
650
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
651
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
652
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
653
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
654
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
655
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
656
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
657
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
658
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
659
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
660
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
661
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
662
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
663
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
664
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
665
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
666
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
667
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
668
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
669
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
670
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
671
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
672
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
673
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
674
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
675
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
676
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
677
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
678
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
679
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
680
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
681
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
682
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
683
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
684
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
685
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
686
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
687
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
688
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
689
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
690
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
691
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
692
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
693
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
694
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
695
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
696
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
697
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
698
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
133
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
134
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
135
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
137
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
138
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
139
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
140
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
142
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
143
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
145
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
146
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
147
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
148
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
150
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
151
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
152
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
153
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
154
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
155
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
156
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
158
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
160
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
162
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
164
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
165
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
167
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
168
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
169
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
170
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
171
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
172
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
173
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
175
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
177
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
178
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
180
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
181
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
182
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
183
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
184
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
185
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
186
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
187
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
188
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
190
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
192
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
193
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
194
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
195
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
196
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
198
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
200
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
201
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
202
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
203
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
随着编写的深入,从起初的只想学习一下MemshipProvider知识,变成了现在的要写一个实用的OracleMemshipProvider,这一切离不开关注本blog的朋友们,希望有兴趣的朋友参与进来,编写出基于其他数据库平台的MemshipProvider。比如:MySQLMemshipProvider等。