Asp.net 2.0的一些小心得
接触asp.net 2.0已经好长时间了,一直想把自己的一些经过写一写,一来因为asp.net 的好多内容与asp.net 1.1的有好多不同,在website design方面,asp.net 2.0的确是1.1的一个飞跃,在数据库连接、新的组件、改良后的控件等方面,都有着极大的提高。
按照MS官方说法,Asp.net 2.0的目标主要是提高开发效率,从我目前的接触来看,这一点的优势已经体现,比如Objectdata概念的引入,各种组件的提供,开发环境(IDE)的改善(特别是Intellisense的扩展功能),这些都对开发效率的提高起了突出贡献。
新事物的引入,带来的不仅仅是优点,目前在开发过程中,各类帮助文档的缺乏,导致好多功能不能得到体现,更严重的是,由于一些基本设置的没有说明,而使开发人员在开发过程中无所适从(小虫就有很深的体会)。鉴于此,小虫希望把自己在摸索过程中总结出来的一些小经验,和到处求问而得来的答案,而给大家带来些帮助。
首先,小虫想说的Login组件,这个组件是小虫在使用中第一个接触的新东西,当然也遇到好多哭笑不得的东西。

案例一:密码设置
案例现象:在创建用户的时候,输入密码,然后输入确认密码, 它老是提示 请输入相同的密码。
这个问题大家问的很多,其实这是一个密码保护的问题,asp.net 2.0里面缺省的密码规格设置为8个字符以上,必须有大小写字母和数字以及标点符号,哈哈,搞笑吧。

解决方案:
在web.config里面加上:
<membership>
<providers>
<add connectionStringName="LocalSqlServer" passwordAttemptWindow="10"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false"
applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed"
minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0"
passwordStrengthRegularExpression="" name="MyMembershipProvider"
type="System.Web.Security.SqlMembershipProvider" />
</providers>
</membership>

把上面的内容加在<system.web>里面,这样就设置为密码为4个任意字符以上。这是小虫在www.asp.net里面求得的答案。

案例二:找回密码
案例现象:无法给用户的mail box发密码邮件。
这个问题小虫一开始就是在找哪里可以设置smtp server的地方,找在找没找到,倒是在在www.asp.net提问,还是第一个人呢,呵呵,MS的工程师给出的答案。
在machine.config里面加上:

<smtpMail
serverName=”<mail server address>”
serverPort=”25”>

搞吧,要加在这里,晕。
还有就是可以设置一个template。格式如下:
晕,老忘记密码,下次发密码要收费拉
记着,用户名是:<%UserName%>
密码是<%Password%>

下次在忘记,先付100RMB。
把这个template文件保存为123.txt,然后把这个文件名赋予passwordrecovery控件的MailDefinition.BodyFileName属性。
也可以加在web.config

案例三:用户登陆后,如何查询用户的基本信息
这个问题是csdn上有人问,当时小虫回答了,后来发现又有人问。
很简单: MembershipUser user = Membership.GetUser();
然后你想要什么,就直接到user里面找把,具体内容Msdn里面说的很清楚了。
还有就是MembershipUser.GetAllUser();可以得到所有用户的一个列表,然后想要什么就去这个列表里面拿吧,呵呵。

案例四:如何把数据库从Access切换到Sql server
这个是bate 1的问题,bate 2已经缺省为sal server,解决办法也简单:
这里有个工具叫aspnet_regsql.exe,在windows目录下micorsoft.net\frameowork\<版本号>这个目录下。

案例五:
不知道用户的老密码,如何更改密码,有个小巧妙,用MembershipUser.ResetPassword()这个函数得到一个随机生成的密码,然后,呵呵,在用ChangePassword()就可以了。

案例六:
不想用Ms提供的控件,但想用这套管理办法。
很简单,就直接调用MembershipUser类里面的API,小虫就是这样用的,因为,呵呵,美工帮我做界面了,虽然login个各个控件的template都可以该,也还比较不错,但是总没自己做的好看,于是自己做了控件,但是用MembershipUser的API,效果一样。

案例七:
如何扩充功能,小虫测试过,可以改数据库结构,比如加一些字段和表,然后自己做个类继承MembershipUser,把你需要的函数加进去,哦,一切OK.不过千万别delete原来的东西,哈哈。

随手就写了这些,如果大家有兴趣,我会继续写下去。

一个在Mircosoft大树上蛀了几个小洞的虫子
联系Mail: 代码虫
小虫目前做的主页: http://www.gofordesign.com