使用 Profile 对象存储用户配置信息

    ASP.NET 中的 Profile 对象与 Cookie 很相似,都是用于存储持久型信息,但比 Profile 提供更多的功能。

    现在很多网站都提供个性化外观,也就是提供让用户自己定义网页的外观,哪每个用户的配置信息保存在哪呢?Profile 对象就是负责这方面的。默认的情况下,Profile 将这些信息保存在数据库中。在使用的时候只要调用当前 HttpContext 的 Profile 属性即可,Profile 属性是一个 ProfileBase 类实例,ASP.NET 使用 ProfileBase 类创建用于用户配置文件的类。在启动启用了用户配置文件的应用程序时,ASP.NET 会创建一个类型为 ProfileCommon 的新类,该类从 ProfileBase 类继承,所有用户配置属性就存储在这个类里面,同时该也被加载到 HttpContext 的 Profile 属性里。一般地,要实现 Profile 功能,需要二个条件,一是配置 web.config 文件,二是配置数据库。

    配置 web.config 文件

    网站设计者可以根据需要定义可以让用户自定义的属性,如:网页底色、字体大小等等,如:

    <connectionStrings>
      <add name="SqlServices" connectionString="server=(local);uid=sa;pwd=;database=TestProfile" />
    </connectionStrings>

    <profile defaultProvider="SqlProvider">
      <providers>
          <add name="SqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="SqlServices" applicationName="TestProfile" description="SqlProfileProvider for TestProfile" />
      </providers>
      <properties>
          <add name="FavoriteColor" allowAnonymous="true" defaultValue="Red" />
          <add name="FontSize" allowAnonymous="true" defaultValue="12px" />
      </properties>
    </profile>

    以上配置信息定义了两个配置属性,一个是 FavoriteColor,默认值为:Red,一个是 FontSize,默认值为:12px。

    配置数据库

    要使数据库支持 Profile 功能,需要向数据库添加一些表和存储过程,当然啦,肯定不用我们自己去定义,使用 aspnet_regsql 工具自动为数据库添加 Profile 的功能支持。该工具位于 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ 里,可以在命令行窗口下输入 aspnet_regsql,然后回车,用向导的方式配置数据库,配置过程很简单,只要选中要配置的数据库,然后一路 Next 就行了,完了看一看数据库,增加了很多表、存储过程和视图,都是以 aspnet_ 开头命名的,有 11 表,55个存储过程,9 个视图,当然啦,这么多东西不是仅仅为了支持 Profile 功能,还有其它功能同样用到这个东西,如:Membership、MemberRoles,这几个功能都是采用 Provider 模式设计的。

    只要配置好以上两项工作,就可以用 Profile 功能了,如:

    // Test.aspx

    <body bgcolor="<%= Profile.FavoriteColor %>">


    以上所存储的 Red、12px 数据都是简单类型(System.String,也是默认的类型),也可以存储自定义的复杂类型(类类型)。

发表评论
姓名:
主页:
QQ/Email:  (只有博主才能看到)
验证码:  
内容:
(请不要发表任何与政治相关的内容)