代码改变世界

Profile作用

2012-06-15 22:07  shy_carson  阅读(1945)  评论(0)    收藏  举报

(1):为每个用户存储配置信息(存储和使用唯一与用户对应的信息,用户的唯一身份标识在再次访问时识别用户)

   (2):支持强类型(如购物车对象)   
     在使用Session 和Application 对象时,首先,要使用字符串定义一个
名称,然后将需要存储的信息保存起来。当这些对象中获取数据时,系统返回
的都是Object类型的对象,而不对其加以区分。但是Profile属性中存储的用
户配置信息是强类型。也就是,系统会自动对用户配置的信息的类型加以区分。
(3):数据长期存储:  aspnetdb

(4):支持匿名名用户
   例如:去当当网买一本书,在没有登录时,是可以将书添加到购物车中的,
但是在结账时,必须登录,但是购物车中的内容不会丢失。只是角色的改变。
这一点说明了,即使用户没有注册登录,profile属性也可以存储其个性化的
配置信息。Profile属性主要是根据客户端浏览器中存储的Cookie标记,实现
对匿名用户的区分。同时,使用SQLSERVER数据库来存储匿名用户的配置信息。
3:profile的数据存储
默认情况下,Profile的内容会保存在SQLSERVER Express数据库aspnetdb中。
注册微软默认的数据库aspnetdb   在visual studio 命令提示符中输入 aspnet_regsql
4:配置Profile
web.config的profile配置节
<profile>
               <providers>
                    <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
               </providers>
          </profile>


<profile enabled="true|false"  inherits="fully qualified type reference"    automaticSaveEnabled="true|false"  defaultProvider="provider name">
<properties>...</properties>
<providers>...</providers>
</profile>


enabled:该属性值为布尔值,指定是否启用Asp.net用户配置文件。如果为
true,则启用Asp.net用户配置文件。默认值为true.

defaultProvider:该属性用于定义默认的用户配置提供程序名称。其属性值为String类型,默认值是AspNetSqlProfileProvider

automaticSaveEnabled:该属性的值为布尔值, 指定用户配置文件在ASP.NET页执行结束时自动保存。如果为true,则用户配置文件在

ASP.NET页执行结束时自动保存。默认值为true

inherits:包含从ProfileBase抽象类派生的自定义类型的类型引用。
 
   ProfileBase:该类提供对用户配置属性的非类型化访问。

properties:必选的元素。定义用户配置文件属性和属性的集合。

providers: 可选的元素。定义配置文件提供程序的集合。

例如:

<System.web>
<profile>
   <properties>
     <add name="Name" type="System.String" allowAnonymous="true">//allowAnonymous:表示允许存储匿名用户对该属性的配置信息。
   </properties>
</profile>
</System.web>


实现设置和访问用户配置属性的源代码

//设置用户配置属性Name

Profile.Name=txtName.Text;

//访问用户配置属性Name

lbName.Text=Profile.Name;



三:简单实例应用(为匿名用户实现简单数据类型的个性化用户配置)

Profile_Demo1.aspx

关于该页面的配置

<anonymousIdentification enabled="true"/>
      <profile>
        <properties>
          <add name="Name" allowAnonymous="true"/>
          <add name="LastSubmit" type="System.DateTime" allowAnonymous="true"/>
          <group name="Address">
            <add name="City" allowAnonymous="true"/>
            <add  name="PostalCode" allowAnonymous="true"/>
          </group>
        </properties>
       
      </profile>


必须为属性定义名称name,这样应用程序才能够通过Profile属性访问该属性。默认情况下,属性的数据类型是String类型,当然也可以给属性定义其他的数据类型。
属性组是对属性进行逻辑组织的一种方式,当属性较多(可能会出现重复的情况)而又不好区分,那么可以通过属性组的方式对属性进
行逻辑组织。
默认情况下,用户配置功能仅存储经过验证的注册用户的数据,不对匿名用户配置进行支持。因此必须显示启用,即将anonymousIdentification属性enabled设置为true.此外,在定义用户配置属性时,必须将其显示定义为可由匿名用户单独使用。即在匿名用户可访问的属性中设置allowAnonymous="true".这样应用程序就会存储匿名用户的配置信息了。

当应用程序编译以后,ASP.NET在应用程序的App_Data文件夹中,添加了一个ASPNETDB.MDF数据库文件。将信息保存在aspnet_Profile

数据表中。该表存储了用户配置属性的相关信息。该表中有5个列,UserId列:用于存储用户唯一标识。PropertyNames列用于存储用户

配置属性名称,也就是在<profile>中定义的属性。PropertyValueString列用于存储字符串类型的用户配置属性数据。例如,本例中

的Name,LastSubmit,City,和PostalCode等属性的值均保存在该列中。PropertyValuesBinary列中用于存储采用二进制序列化后用户配

置属性信息。LastUpdateDate列用于存储上次数据更新日期和时间。
Profile:个性化,asp.net中用来存储或者设置个性化数据的功能,通常是以二进制的形式将数据放入到数据源中.