在ASP.NET Whidbey中,一个基本的目标是,在开发应用程序时,减少开发时间和代码量。为了达到这一目的,ASP.NET Whidbey提供了一系列的新特征,例如无需代码的数据绑定,新的服务器端控件,尤其是,在这篇文章中要重点讨论的个人化(personalization)和成员角色(membership),来节省你的时间。
伴随着个人化和成员角色这两个新特征,第一步是要配置你用来存储个人化(personalization)和成员角色(membership)数据的提供者(provider)。虽然你可以自己创建Access或SQL Server数据库,手动添加必要的配置元素,更简单的方法是使用ASP.NET Web Site Administration tool,如图一。
图一
请注意,要成功的配置一个应用程序,你必须使用一个具有管理员权限的账号来登录。
要创建一个Access的.mdb文件来储存personalization的数据,你需要打开ASP.NET Web Site Administration tool。在一个叫DATA的文件夹下,会自动创建一个AspNetDB.mdb的文件。
图二
要配置membership的provider,你需要使用ASP.NET Web Site Administration tool的Security标签。最简单的方法是选择使用向导,如图三。
图三
在此刻,membership的数据库会被创建,必须的配置元素也会被加入到web.config文件中。你需要做的,只是把所有用户加入到数据库,设置限制的页,以及创建一个login页面。
很重要的一点是,你可以注意到,为personalization和membership创建的数据库是相同的,所以你可以使用同样的provider。
除了内嵌的Access和SQL Server的providers,你可以创建自己定制的providers,然后使用这些providers来配置应用程序。也就是说,你如果有了一个以前的数据库,还是可以使用membership服务。
上面的都是理论方面的,接着我们来看一下实例。我会为各位读者展示使用Access provider来配置personalization和membership,在membership数据库中添加一个用户,添加personalization的属性,在一个页面中使用这些属性,分别是匿名用户和已登录的用户。
首先要创建一个Web站点,然后点击Solution Explorer窗口下的Web Site Administration tool按钮。(见图二)
接着,点Security标签,选择Security Setup Wizard单选钮,并点Next。第一步是很简单的信息,所以读一下,就可以选Next。第二步,选择From the Internet然后点Next。"From the Internet"是使用ASP.NET窗体验证来配置应用程序,"From a local area network"使用Windows验证来配置应用程序。第三步,点Next来使用Web Site Administration tool已经自动创建的AspNetDB.mdb文件。接着点Next跳过第四步。在第五步,因为有测试的目的,至少要加上一个用户。第六步是创建访问规则。最后,按Finish退出向导。数据库已经建立,web.config文件也被自动创建,加入了Web站点,里面包含了各种元素,文件如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="webAdminConnection631974613823397072"
connectionString=
"c:\inetpub\wwwroot\aspnetPRO_PM\DATA\AspNetDB.mdb"
/>
</connectionStrings>
<system.web>
<membership defaultProvider="AspNetDB">
<providers>
<add name="AspNetDB"
type="System.Web.Security.AccessMembershipProvider,
System.Web, Version=1.1.3300.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName=
"webAdminConnection631974613823397072"
applicationName="/aspnetPRO_PM"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Encrypted" />
</providers>
</membership>
<roleManager defaultProvider="AspNetDB">
<providers>
<add name="AspNetDB"
type="System.Web.Security.AccessRoleProvider,
System.Web, Version=1.1.3300.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName=
"webAdminConnection631974613823397072"
applicationName="/aspnetPRO_PM" />
</providers>
</roleManager>
<authentication mode="Forms" />
</system.web>
</configuration>
如果要允许匿名用户访问你的站点,<anonymousIdentification>元素是必需的。personalization部分包含两个属性,第一个属性,theme,并不指定一个类型,所以可以当作一个字符串对待。第二个属性,FavoriteColors,指定了StringCollection类作为它的类型。在这个属性中,如果想要存储不兼容StringCollection类的数据,都会抛出异常。
<anonymousIdentification enabled="true"/>
<personalization>
<profile>
<proper