﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-不沉之月</title><link>http://www.blogjava.net/vls/</link><description>低调的美丽</description><language>zh-cn</language><lastBuildDate>Sun, 03 May 2026 04:33:48 GMT</lastBuildDate><pubDate>Sun, 03 May 2026 04:33:48 GMT</pubDate><ttl>60</ttl><item><title>Using check-case-insensitive.py on Windows</title><link>http://www.blogjava.net/vls/archive/2008/09/02/226466.html</link><dc:creator>vls</dc:creator><author>vls</author><pubDate>Tue, 02 Sep 2008 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/vls/archive/2008/09/02/226466.html</guid><wfw:comment>http://www.blogjava.net/vls/comments/226466.html</wfw:comment><comments>http://www.blogjava.net/vls/archive/2008/09/02/226466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vls/comments/commentRss/226466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vls/services/trackbacks/226466.html</trackback:ping><description><![CDATA[<h2 class="content-title">Using check-case-insensitive.py on Windows</h2>
<!-- start main content -->
<div class="node">
<div class="content"><!-- google_ad_section_start -->
<p><strong>Do not use this script anymore, use <tt>case-insensitive.py</tt> which is far more efficient.</strong></p>
<p>Get these files:</p>
<ul>
    <li>Subversion binaries e.g., <tt>svn-1.2.3-setup.exe</tt> and Python bindings e.g., <tt>svn-win32-1.2.3_py.zip</tt> <a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&amp;expandFolder=91&amp;folderID=91">from here</a>.
    <li><a href="http://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe">Python 2.3.5</a>
    <li><a href="http://svn.collab.net/viewvc/svn/tags/1.4.3/contrib/hook-scripts/check-case-insensitive.py?revision=23198&amp;view=markup">The hook script</a>. </li>
</ul>
<p>Then:</p>
<ul>
    <li>Install Subversion 1.2.3
    <li>Install Python 2.3.5
    <li>Unzip svn-win32-1.2.3_py.zip
    <li>Copy the unzipped directory <tt>svn-win32-1.2.3</tt> to inside directory <tt>C:\Python23\Lib\site-packages\</tt>
    <li>Copy all DLLS from <tt>C:\Program Files\Subversion\bin\*.dll</tt> to <tt>C:\Python23\Lib\site-packages\svn-win32-1.2.3\python\libsvn\</tt>
    <li>Copy the file <tt>check-case-insensitive.py</tt> to directory <tt>c:\svnrepo\hooks\</tt>
    <li>Edit definition of <code>SVNLIB_DIR</code> in file <tt>check-case-insensitive.py</tt> to<br />
    <pre>SVNLIB_DIR = r"C:/Python23/Lib/site-packages/svn-win32-1.2.3/python/"</pre>
    <li>Add/Create the file <tt>c:\svnrepo\hooks\pre-commit.bat</tt> containing these lines:<br />
    <pre>c:\python23\python c:\svnrepo\hooks\check-case-insensitive.py %1 %2
    if errorlevel 1 goto :ERROR
    exit 0
    :ERROR
    echo Error found in commit 1&gt;&amp;2
    exit 1
    </pre>
    </li>
</ul>
<p>Test by checking out a repo to two different directories</p>
<p>Create, add, and commit a file with an UPPERCASE name in first directory</p>
<p>Create, add, and commit a file with a lowercase name in second directory</p>
<p>The second commit will fail with this message:</p>
<pre>Adding         sales\sale1.cpp
Transmitting file data .svn: Commit failed (details follow):
svn: 'pre-commit' hook failed with error output:
Case conflict: svnrepo/acme/trunk/sales/sale1.cpp
Error found in commit
</pre>
<p>Delete the UPPERCASE file with an "<tt>svn rm svn://..</tt>" command</p>
<p>The second commit can now go through</p>
<p>Thanks to xnooby for working this out and <a href="http://svn.haxx.se/users/archive-2005-10/0089.shtml">posting these instructions</a> to the <a href="http://svn.haxx.se/users/">mailing list</a>.</p>
<!-- google_ad_section_end --></div>
</div>
<img src ="http://www.blogjava.net/vls/aggbug/226466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vls/" target="_blank">vls</a> 2008-09-02 18:31 <a href="http://www.blogjava.net/vls/archive/2008/09/02/226466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]滑移效果</title><link>http://www.blogjava.net/vls/archive/2008/05/17/201028.html</link><dc:creator>vls</dc:creator><author>vls</author><pubDate>Fri, 16 May 2008 17:46:00 GMT</pubDate><guid>http://www.blogjava.net/vls/archive/2008/05/17/201028.html</guid><wfw:comment>http://www.blogjava.net/vls/comments/201028.html</wfw:comment><comments>http://www.blogjava.net/vls/archive/2008/05/17/201028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vls/comments/commentRss/201028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vls/services/trackbacks/201028.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 转载自：http://www.cnblogs.com/cloudgamer/archive/2008/05/16/1200705.html var $ = function (id) {    return "string" == typeof id ? document.getElementById(id) : id;};function Event(e){    v...&nbsp;&nbsp;<a href='http://www.blogjava.net/vls/archive/2008/05/17/201028.html'>阅读全文</a><img src ="http://www.blogjava.net/vls/aggbug/201028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vls/" target="_blank">vls</a> 2008-05-17 01:46 <a href="http://www.blogjava.net/vls/archive/2008/05/17/201028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js中显式声明的重要性</title><link>http://www.blogjava.net/vls/archive/2008/05/11/199808.html</link><dc:creator>vls</dc:creator><author>vls</author><pubDate>Sun, 11 May 2008 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/vls/archive/2008/05/11/199808.html</guid><wfw:comment>http://www.blogjava.net/vls/comments/199808.html</wfw:comment><comments>http://www.blogjava.net/vls/archive/2008/05/11/199808.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/vls/comments/commentRss/199808.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vls/services/trackbacks/199808.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;b()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">;<br />
}<br />
<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;a()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;b();<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">i=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">i);<br />
}<br />
a();</span></div>
<br />
看上例代码，a()和b()里面的变量i都没有使用var声明，最终alert结果会是3！！！ <img src ="http://www.blogjava.net/vls/aggbug/199808.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vls/" target="_blank">vls</a> 2008-05-11 11:23 <a href="http://www.blogjava.net/vls/archive/2008/05/11/199808.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义MembershipProvider配合Asp.net 2.0 Login控件</title><link>http://www.blogjava.net/vls/archive/2008/02/29/183019.html</link><dc:creator>vls</dc:creator><author>vls</author><pubDate>Fri, 29 Feb 2008 10:51:00 GMT</pubDate><guid>http://www.blogjava.net/vls/archive/2008/02/29/183019.html</guid><wfw:comment>http://www.blogjava.net/vls/comments/183019.html</wfw:comment><comments>http://www.blogjava.net/vls/archive/2008/02/29/183019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vls/comments/commentRss/183019.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vls/services/trackbacks/183019.html</trackback:ping><description><![CDATA[<p>转自：<a href="http://www.programbbs.com/doc/2988.htm">http://www.programbbs.com/doc/2988.htm<br />
</a><br />
转向Asp.net 2.0，如果单单看Asp.net 2.0的例子和SDK，相信你一定对系统自带的Login<a href="http://www.programbbs.com/com/">控件</a>有比较深刻的印象。Asp.Net 2.0的Login<a href="http://www.programbbs.com/com/">控件</a>不用你写一行检测用户输入是否合法的<a href="http://www.programbbs.com/doc/">程序</a>代码及相关查询数据库的SQL脚本，只需把相应的<a href="http://www.programbbs.com/com/">控件</a>拖到Web表单中，即可完成用户登陆，创建用户，用户角色管理，修改密码用户详细情况，取回密码等功能模块。<br />
　　Login<a href="http://www.programbbs.com/com/">控件</a>看上去近乎完美，而我们现在手头正好来了一个项目要求采用Asp.net 2.0开发，而该项目也要求有登陆，用户管理，权限管理，修改密码等功能，相信绝大多数人都会考虑使用Login<a href="http://www.programbbs.com/com/">控件</a>来快速搞定这些要求。于是乎，大家拿出以前的教学例子，试着分析较深一层的代码，看看该在哪里对Login<a href="http://www.programbbs.com/com/">控件</a>修改一番，让它满足手头项目已设计好的数据库表结构。结果发现，除了aspx文件里面可以对Login<a href="http://www.programbbs.com/com/">控件</a>的外观，提示文字可以自定义外，cs文件中愣是找不到一行代码，然后继续翻MSDN和Google，终于知道，要在自己的项目中直接使用系统自带的Login<a href="http://www.programbbs.com/com/">控件</a>，需要做２项修改工作：<br />
　　1、根据你选用的数据库，修改Web.config中相应的connectionStrings。系统默认的数据库是SQL Server 2005 Express，如果我们的数据库是Access/SQL2000/2005/Oracle，当然要大改一番了。<br />
　　2、改完Web.config还不够，我们还得执行C:\WINNT\Microsoft.NET\Framework\v2.0.507\aspnet_sqlreg.exe注册你的sql server，该<a href="http://www.programbbs.com/doc/">程序</a>的作用是在你的数据库中建立Login<a href="http://www.programbbs.com/com/">控件</a>需要的所有资源(大约有上十个表，三十多条存储过程，上十个视图等等)，如果你使用的是access/orcale，或者是其他格式的数据库，那你自己去Google相应的SQL脚本吧。<br />
　　OK，想到Login<a href="http://www.programbbs.com/com/">控件</a>帮你节省的工作量，相信不少人都会咬着牙完成上面的２项工作。完成上面２项工作后，大家接着读项目需求，发现有用户组管理和权限管理，幸好开发资料上提到Login<a href="http://www.programbbs.com/com/">控件</a>集成的Role角色管理模块正好与之对应，不过以后我们创建一个用户后，还要再进入一个页面给用户选择所属用户组，当然，采用Role的话，我们可以设定一个用户同时属于多个用户组，貌似功能很强大哟。继续读项目需求，发现这些项目的用户对象还有不少Login<a href="http://www.programbbs.com/com/">控件</a>中没有的属性要保存，回头再去翻MSDN，发现Profile可以帮我们解决这个问题。<br />
　　嗯，除开使用Login<a href="http://www.programbbs.com/com/">控件</a>，运行aspnet_sqlreg.exe帮我们建立的上十个表，三十多条存储过程，上十个视图等，我们再不用建表保存用户的任何信息了，以后我们只用在Web.config文件和相应的cs代码中加上Role和Profile的处理代码，即可完成该项目的登陆，用户管理，密码修改功能。算算投入查MSDN，Google及修改Web.config文件和相应的cs代码的时间，相信原来自己写过自定义Login<a href="http://www.programbbs.com/com/">控件</a>的朋友已经准备发誓再也不碰Asp.net 2.0自带的Login<a href="http://www.programbbs.com/com/">控件</a>了。<br />
　　其实，我们完全有更简洁通用的办法来重用Asp.net 2.0自带的Login<a href="http://www.programbbs.com/com/">控件</a>，即只用它最基本的登陆及修改密码功能，这２个基本功能照旧从<a href="http://www.programbbs.com/tool/">工具</a>箱拖个<a href="http://www.programbbs.com/com/">控件</a>出来往Web表单上一扔即可，一行代码都不多加。其他的用户/用户组管理，权限管理不用扯上Login<a href="http://www.programbbs.com/com/">控件</a>，数据库想用什么产品就用什么产品，mysql/db2/infomax来者不拒;表结构想怎么设计就怎么设计，E-R图，UML图直接照搬就成;用户/用户组管理和权限管理模块想怎么规定就怎么规定，自关联，无限分级都行。总之一句话：让Login<a href="http://www.programbbs.com/com/">控件</a>附带的上十个表，三十多条存储过程，上十个视图见鬼去吧。<br />
　　下面细说实现方法，Asp.net 2.0的Login<a href="http://www.programbbs.com/com/">控件</a>用到了3个类来从数据库中获取相应的数据，分别是MemberShipprovider，RoleProvider及ProfileProvider，系统自带的这3个类的方法的代码被隐藏起来了，尽管没公开，但实际上就是使用我上面一直念叨的上十个表，三十多条存储过程，上十个视图。不管你用什么数据库，只要想使用Login<a href="http://www.programbbs.com/com/">控件</a>的所有功能，必须保证该数据库中有与之对应的十来个表，三十多条存储过程，十来个视图。<br />
　　当然，MS的架构设计师也不是某些人想象中的那么无能，上面的这三个类其实都是抽象类，系统的Login<a href="http://www.programbbs.com/com/">控件</a>实际调用的是从这３个类派生出来的针对SQL Server2000/2005的数据操作类，灵活的架构设计正是在这里体现出来。既然MemberShipProvider，RoleProvider及ProfileProvider三大头是抽象类，那么我们完全可以自定义一个只针对用户表的username及password２个列操作的MemberShipprovider派生类出来，重写登陆验证，修改密码以及其调用的方法，然后在Web.config中把membership的提供者指定为我们自己写的MemberShipprovider派生类，这样我们就可以和原来一样，把Login<a href="http://www.programbbs.com/com/">控件</a>的登陆和修改密码２个子<a href="http://www.programbbs.com/com/">控件</a>往Web表单上一拖了事。<br />
　　下面开始贴代码，懒的深究的朋友们可以直接把我给出的cs代码贴回去，建个cs文件放到App_Code目录下，然后按照后面的Web.config修改相应的connectionStrings和membership即可，以后任何项目要利用Asp.net 2.0的Login<a href="http://www.programbbs.com/com/">控件</a>的登陆和修改密码都是这样照葫芦画瓢，够傻瓜吧。<br />
<br />
</p>
<link href="http://www.blogjava.net/Files/vls/highlight.zip" rel="Stylesheet" type="text/css"/ />
<DIV class=dp-highlighter><DIV class=bar></DIV>
<OL class=dp-c>
<LI class=alt><SPAN><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System.Data; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System.Configuration; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System.Data.SqlClient; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System.Collections.Generic; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System.Text.RegularExpressions; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System.Data.SqlTypes; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System.Web; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN class=keyword>using</SPAN><SPAN>&nbsp;System.Web.Security; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN class=comment>/**/</SPAN><SPAN class=comment>/**/</SPAN><SPAN class=comment>/**/</SPAN><SPAN>///&nbsp;&lt;summary&gt; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN class=comment>///&nbsp;MyMemberShip&nbsp;的摘要说明 </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN class=comment>///&nbsp;&lt;/summary&gt; </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>class</SPAN><SPAN>&nbsp;MyMemberShip&nbsp;:&nbsp;MembershipProvider &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>private</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;_requiresQuestionAndAnswer; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>private</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;_minRequiredPasswordLength;&nbsp; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;MyMemberShip() &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=comment>//&nbsp;TODO:&nbsp;在此处添加构造函数逻辑 </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;ApplicationName &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>set</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>void</SPAN><SPAN>&nbsp;Initialize(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;name,&nbsp;System.Collections.Specialized.NameValueCollection&nbsp;config) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>if</SPAN><SPAN>&nbsp;(config[</SPAN><SPAN class=string>"requiresQuestionAndAnswer"</SPAN><SPAN>].ToLower()&nbsp;==&nbsp;</SPAN><SPAN class=string>"true"</SPAN><SPAN>) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_requiresQuestionAndAnswer&nbsp;=&nbsp;</SPAN><SPAN class=keyword>true</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>else</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_requiresQuestionAndAnswer&nbsp;=&nbsp;</SPAN><SPAN class=keyword>false</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>.TryParse(config[</SPAN><SPAN class=string>"minPasswordLength"</SPAN><SPAN>],&nbsp;</SPAN><SPAN class=keyword>out</SPAN><SPAN>&nbsp;_minRequiredPasswordLength); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>base</SPAN><SPAN>.Initialize(name,&nbsp;config); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;ChangePassword(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;username,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;oldPassword,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;newPassword) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>using</SPAN><SPAN>&nbsp;(SqlConnection&nbsp;connection&nbsp;=&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;SqlConnection(DBBase.DBConnectionString)) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlCommand&nbsp;command&nbsp;=&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;SqlCommand(); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.CommandText&nbsp;=&nbsp;</SPAN><SPAN class=string>"update&nbsp;[User]&nbsp;set&nbsp;user_pwd=@newpwd&nbsp;where&nbsp;user_name=@name&nbsp;and&nbsp;user_pwd=@oldpwd"</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.Parameters.AddWithValue(</SPAN><SPAN class=string>"@name"</SPAN><SPAN>,&nbsp;username); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.Parameters.AddWithValue(</SPAN><SPAN class=string>"@oldpwd"</SPAN><SPAN>,&nbsp;CryptUtil.GetStringHashValue1(StringUtil.SqlEscape(oldPassword))); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.Parameters.AddWithValue(</SPAN><SPAN class=string>"@newpwd"</SPAN><SPAN>,&nbsp;CryptUtil.GetStringHashValue1(StringUtil.SqlEscape(newPassword))); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.Connection&nbsp;=&nbsp;connection; &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connection.Open(); &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>return</SPAN><SPAN>&nbsp;(</SPAN><SPAN class=keyword>int</SPAN><SPAN>)command.ExecuteNonQuery()&nbsp;&gt;&nbsp;0&nbsp;?&nbsp;</SPAN><SPAN class=keyword>true</SPAN><SPAN>&nbsp;:&nbsp;</SPAN><SPAN class=keyword>false</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=comment>//throw&nbsp;new&nbsp;Exception("The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."); </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;ChangePasswordQuestionAndAnswer(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;username,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;password,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;newPasswordQuestion,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;newPasswordAnswer) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;MembershipUser&nbsp;CreateUser(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;username,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;password,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;email,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;passwordQuestion,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;passwordAnswer,&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;isApproved,&nbsp;</SPAN><SPAN class=keyword>object</SPAN><SPAN>&nbsp;providerUserKey,&nbsp;</SPAN><SPAN class=keyword>out</SPAN><SPAN>&nbsp;MembershipCreateStatus&nbsp;status) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;DeleteUser(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;username,&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;deleteAllRelatedData) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;EnablePasswordReset &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>);&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;EnablePasswordRetrieval &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>);&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;MembershipUserCollection&nbsp;FindUsersByEmail(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;emailToMatch,&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;pageIndex,&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;pageSize,&nbsp;</SPAN><SPAN class=keyword>out</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;totalRecords) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;MembershipUserCollection&nbsp;FindUsersByName(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;usernameToMatch,&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;pageIndex,&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;pageSize,&nbsp;</SPAN><SPAN class=keyword>out</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;totalRecords) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;MembershipUserCollection&nbsp;GetAllUsers(</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;pageIndex,&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;pageSize,&nbsp;</SPAN><SPAN class=keyword>out</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;totalRecords) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;GetNumberOfUsersOnline() &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;GetPassword(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;username,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;answer) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;MembershipUser&nbsp;GetUser(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;username,&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;userIsOnline) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime&nbsp;myDate&nbsp;=&nbsp;DateTime.Today; &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MembershipUser&nbsp;user&nbsp;=&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;MembershipUser( &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name,&nbsp;</SPAN><SPAN class=comment>//&nbsp;Provider&nbsp;name </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username,&nbsp;</SPAN><SPAN class=comment>//&nbsp;Username </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>null</SPAN><SPAN>,&nbsp;</SPAN><SPAN class=comment>//&nbsp;providerUserKey </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bobcy@21cn.com,&nbsp;</SPAN><SPAN class=comment>//&nbsp;Email </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String.Empty,&nbsp;</SPAN><SPAN class=comment>//&nbsp;passwordQuestion </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String.Empty,&nbsp;</SPAN><SPAN class=comment>//&nbsp;Comment </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>true</SPAN><SPAN>,&nbsp;</SPAN><SPAN class=comment>//&nbsp;isApproved </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>false</SPAN><SPAN>,&nbsp;</SPAN><SPAN class=comment>//&nbsp;isLockedOut </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime.Now,&nbsp;</SPAN><SPAN class=comment>//&nbsp;creationDate </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime.Now,&nbsp;</SPAN><SPAN class=comment>//&nbsp;lastLoginDate </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime.Now,&nbsp;</SPAN><SPAN class=comment>//&nbsp;lastActivityDate </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime.Now,&nbsp;</SPAN><SPAN class=comment>//&nbsp;lastPasswordChangedDate </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;DateTime(1980,&nbsp;1,&nbsp;1)&nbsp;</SPAN><SPAN class=comment>//&nbsp;lastLockoutDate </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;); &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>return</SPAN><SPAN>&nbsp;user;&nbsp; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;MembershipUser&nbsp;GetUser(</SPAN><SPAN class=keyword>object</SPAN><SPAN>&nbsp;providerUserKey,&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;userIsOnline) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;GetUserNameByEmail(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;email) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;MaxInvalidPasswordAttempts &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>);&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;MinRequiredNonAlphanumericCharacters &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>return</SPAN><SPAN>&nbsp;0;&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;MinRequiredPasswordLength &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>return</SPAN><SPAN>&nbsp;_minRequiredPasswordLength;&nbsp;}&nbsp; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>int</SPAN><SPAN>&nbsp;PasswordAttemptWindow &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>);&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;MembershipPasswordFormat&nbsp;PasswordFormat &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>);&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;PasswordStrengthRegularExpression &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>);&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;RequiresQuestionAndAnswer &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>return</SPAN><SPAN>&nbsp;_requiresQuestionAndAnswer;&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;RequiresUniqueEmail &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>get</SPAN><SPAN>&nbsp;{&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>);&nbsp;} &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;ResetPassword(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;username,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;answer) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;UnlockUser(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;userName) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>void</SPAN><SPAN>&nbsp;UpdateUser(MembershipUser&nbsp;user) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>throw</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;Exception(</SPAN><SPAN class=string>"The&nbsp;method&nbsp;or&nbsp;operation&nbsp;is&nbsp;not&nbsp;implemented."</SPAN><SPAN>); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>public</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>override</SPAN><SPAN>&nbsp;</SPAN><SPAN class=keyword>bool</SPAN><SPAN>&nbsp;ValidateUser(</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;username,&nbsp;</SPAN><SPAN class=keyword>string</SPAN><SPAN>&nbsp;password) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>using</SPAN><SPAN>&nbsp;(SqlConnection&nbsp;connection&nbsp;=&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;SqlConnection(DBBase.DBConnectionString)) &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlCommand&nbsp;command&nbsp;=&nbsp;</SPAN><SPAN class=keyword>new</SPAN><SPAN>&nbsp;SqlCommand(); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.CommandText&nbsp;=&nbsp;</SPAN><SPAN class=string>"select&nbsp;count(0)&nbsp;from&nbsp;[User]&nbsp;where&nbsp;user_name=@name&nbsp;and&nbsp;user_pwd=@pwd"</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.Parameters.AddWithValue(</SPAN><SPAN class=string>"@name"</SPAN><SPAN>,&nbsp;username); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.Parameters.AddWithValue(</SPAN><SPAN class=string>"@pwd"</SPAN><SPAN>,&nbsp;password); &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command.Connection&nbsp;=&nbsp;connection; &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connection.Open(); &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN class=keyword>return</SPAN><SPAN>&nbsp;((</SPAN><SPAN class=keyword>int</SPAN><SPAN>)command.ExecuteScalar())&nbsp;&gt;&nbsp;0&nbsp;?&nbsp;</SPAN><SPAN class=keyword>true</SPAN><SPAN>&nbsp;:&nbsp;</SPAN><SPAN class=keyword>false</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
<LI class=""><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=alt><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</SPAN></LI>
<LI class=""><SPAN>}&nbsp;&nbsp;</SPAN></LI></OL></DIV>
<br />
Web.Config的membership节这样写，connectionStrings和数据库有关，不同的数据库差别很大，大家自己Google，我就不列出来了。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&lt;</span><span style="color: #000000">membership&nbsp;defaultProvider</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">MyMemberShip</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">providers</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">clear</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">add&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">MyMemberShip</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">MyMemberShip</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;requiresQuestionAndAnswer</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">false</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;connectionString</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">AdminSqlServer</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;minRequiredNonalphanumericCharacters</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">providers</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">membership</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
如果我们想在用户验证登陆成功后做一些额外的处理，可以给登陆<a href="http://www.programbbs.com/com/">控件</a>的登陆按钮添加一个事件，相应的代码如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Login1_Authenticate(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;AuthenticateEventArgs&nbsp;e)<br />
<img id="Codehighlighter1_82_264_Open_Image" onclick="this.style.display='none'; Codehighlighter1_82_264_Open_Text.style.display='none'; Codehighlighter1_82_264_Closed_Image.style.display='inline'; Codehighlighter1_82_264_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_82_264_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_82_264_Closed_Text.style.display='none'; Codehighlighter1_82_264_Open_Image.style.display='inline'; Codehighlighter1_82_264_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_82_264_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_82_264_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(Membership.ValidateUser(Login1.UserName,&nbsp;Login1.Password))<br />
<img id="Codehighlighter1_166_258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_166_258_Open_Text.style.display='none'; Codehighlighter1_166_258_Closed_Image.style.display='inline'; Codehighlighter1_166_258_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_166_258_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_166_258_Closed_Text.style.display='none'; Codehighlighter1_166_258_Open_Image.style.display='inline'; Codehighlighter1_166_258_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_166_258_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_166_258_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">这里添加你的额外处理代码，如Session,login日至等等</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Authenticated&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><img src ="http://www.blogjava.net/vls/aggbug/183019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vls/" target="_blank">vls</a> 2008-02-29 18:51 <a href="http://www.blogjava.net/vls/archive/2008/02/29/183019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.net 的后台处理技术</title><link>http://www.blogjava.net/vls/archive/2008/02/28/182659.html</link><dc:creator>vls</dc:creator><author>vls</author><pubDate>Thu, 28 Feb 2008 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/vls/archive/2008/02/28/182659.html</guid><wfw:comment>http://www.blogjava.net/vls/comments/182659.html</wfw:comment><comments>http://www.blogjava.net/vls/archive/2008/02/28/182659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/vls/comments/commentRss/182659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vls/services/trackbacks/182659.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ASP.net&nbsp;的后台处理技术&nbsp; 转自：http://www.chenjiliang.com/Article/View.aspx?ArticleID=3636&amp;TypeID=5使用方法：System.Threading.TimerCallback&nbsp;t=new&nbsp;System.Threading.TimerCallback&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/vls/archive/2008/02/28/182659.html'>阅读全文</a><img src ="http://www.blogjava.net/vls/aggbug/182659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vls/" target="_blank">vls</a> 2008-02-28 13:28 <a href="http://www.blogjava.net/vls/archive/2008/02/28/182659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>firefox下insertRow</title><link>http://www.blogjava.net/vls/archive/2008/02/12/179652.html</link><dc:creator>vls</dc:creator><author>vls</author><pubDate>Mon, 11 Feb 2008 18:14:00 GMT</pubDate><guid>http://www.blogjava.net/vls/archive/2008/02/12/179652.html</guid><wfw:comment>http://www.blogjava.net/vls/comments/179652.html</wfw:comment><comments>http://www.blogjava.net/vls/archive/2008/02/12/179652.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/vls/comments/commentRss/179652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/vls/services/trackbacks/179652.html</trackback:ping><description><![CDATA[<table cellspacing="2" cellpadding="2" width="500" border="1">
    <tbody>
        <tr>
            <td></td>
            <td>ie6</td>
            <td>&nbsp;firefox</td>
            <td>opera</td>
        </tr>
        <tr>
            <td>insertRow</td>
            <td>支持, 默认参数-1,默认添加到最后</td>
            <td>支持，&nbsp;但不支持默认参数
            <td>支持，默认参数0<br />
            默认添加到最前<br />
            <br />
            </td>
        </tr>
        <tr>
            <td>appendChild</td>
            <td>不支持</td>
            <td>支持，但是增加&nbsp;tr后不影响rows</td>
            <td>支持，效果同insertRow(-1),影响rows </td>
        </tr>
    </tbody>
</table>
dom level 1:<a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-64060425 " target="_blank">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-64060425 </a><br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">//向table追加一个空行：<br />
var</span><span style="color: #000000">&nbsp;otr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;otable.insertRow(</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;otd&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.createElement(</span><span style="color: #000000">"</span><span style="color: #000000">td</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
otd.innerHTML&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
otd.className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">XXXX</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
otr.appendChild(otd);&nbsp;</span></div>
<br />
这样就可以运行在这三种浏览器上了<br />
<img src ="http://www.blogjava.net/vls/aggbug/179652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/vls/" target="_blank">vls</a> 2008-02-12 02:14 <a href="http://www.blogjava.net/vls/archive/2008/02/12/179652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>