个性化用户配置概述、Profile配置节详细介绍
个性化用户配置将配置信息与单个用户关联,用户的数据存储在ASP.NET2.o提供的数据库中,所以能够持久保存。以下几点需要注意:1.存储的数据可以是与用户有关的数据,如果背景颜色、数据显示的条数等等。2.所存储的数据可以是简单数据类型,如String、Int等,也可以是开发人员自己定义的对象。3.默认情况下支持的是注册用户,可以显示声明allowAnonymous=true来实现对匿名用户的支持。4.默认情况下使用的数据库是SqlExpress,可以通过修改Web.Config文件中的ConnectionString和使用aspnet_regsql工具,实现对SqlServer2000数据库的支持。第四部分会给出具体方法。
二、web.config中<profile>的详细配置
<profile enabled="true|false" inherits="fully qualified type reference" automaticSaveEnabled="true|false"
defaultProvider="provider name">
<properties>
<add name="property name" type="fully qualified type reference" provider="provider name"
serializeAs="String|Xml|Binary|ProviderSpecific" allowAnonymous="true|false"
defaultValue="default property value" readOnly="true|false" customProviderData="data for a custom profile provider" />
<clear />
<remove name="property name" />
<group name="group name">
<add name="property name" type="fully qualified type reference" provider="provider name"
serializeAs="String|Xml|Binary|ProviderSpecific" allowAnonymous="true|false"
defaultValue="default property value" readOnly="true|false" customProviderData="data for a custom profile provider" />
<remove name="property name" />
</group>
</properties>
<providers>
<add name="provider name" type="fully qualified type reference" connectionStringName="connection string identifier"
commandTimeout="number of seconds before a command times out" description="description of the provider instance"
applicationName="application name for stored profile information" />
<remove name=" provider name" />
<clear/>
</providers>
</profile>
以上配置是从MSDN中整理出来的,看上去眼花缭乱的都快晕了,下面给出分解的配置,让我们来慢慢消化。
Profile的基本结构:
enabled="true|false"
inherits="fully qualified type reference"
automaticSaveEnabled="true|false"
defaultProvider="provider name">
<properties></properties>
<providers></providers>
</profile>
属性
属性 |
说明 |
enabled |
可选的 Boolean属性。 指定是否启用 ASP.NET 用户配置文件。如果为 true,则启用 ASP.NET 用户配置文件。 默认值为 true。 |
defaultProvider |
可选的 String属性。 指定默认配置文件提供程序的名称。 有关更多信息,请参见 Provider。 默认值为 AspNetSqlProfileProvider。 |
inherits |
可选的 String属性。 包含从 ProfileBase 抽象类派生的自定义类型的类型引用。ASP.NET 动态地生成一个从该类型继承的 ProfileCommon类,并将该类放在当前 HttpContext 的 Profile 属性中。 |
automaticSaveEnabled |
可选的 Boolean属性。 指定用户配置文件是否在 ASP.NET 页执行结束时自动保存。如果为 true,则用户配置文件在 ASP.NET 页执行结束时自动保存。 只有在 ProfileModule 对象检测到某一用户配置文件已修改的情况下,该模块才保存该配置文件。也就是在 IsDirty 属性为 true的情况下。有关更多信息,请参见 ASP.NET 配置文件属性。 默认值为 true。 |
子元素
元素 |
说明 |
properties |
必选的元素。 定义用户配置文件属性和属性组的集合。 |
providers |
可选的元素。 定义配置文件提供程序的集合。 |
父元素
元素 |
说明 |
configuration |
指定公共语言运行库和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。 |
system.web |
为 ASP.NET 配置节指定根元素。 |
profile 的 properties 元素:
<add />
<clear />
<remove />
<group></group>
</properties>
子元素
元素 |
说明 |
add |
可选的元素。 向用户配置文件添加属性。 |
clear |
可选的元素。 从用户配置文件中清除以前定义的所有属性。 |
group |
可选的元素。 定义用户配置文件属性的分组。 |
remove |
可选的元素。 从用户配置文件中移除属性。 |
父元素
元素 |
说明 |
configuration |
指定公共语言运行库和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。 |
system.web |
为 ASP.NET 配置节指定根元素。 |
profile |
为应用程序配置用户配置文件。 |
profile 的 properties 的 add 元素:
name="property name"
type="fully qualified type reference"
provider="provider name"
serializeAs="String|Xml|Binary|ProviderSpecific"
allowAnonymous="true|false"
defaultValue="default property value"
readOnly="true|false"
customProviderData="data for a custom profile provider"
/>
属性
属性 |
说明 |
name |
必选的 String属性。 指定属性名。该值用作自动生成的配置文件类的属性的名称,并用作该属性在 Properties 集合中的索引值。该属性的名称不能包含句点 (.)。 有关自动生成用户配置文件属性的更多信息,请参见 ASP.NET 配置文件属性概述。 |
type |
可选的 String属性。 指定属性类型。 默认值为 String。 |
provider |
可选的 String属性。 指定用于存储和检索属性值的配置文件提供程序。provider属性的值是 providers 元素中指定的某个配置文件提供程序的名称。如果未指定提供程序名称,则使用 profile 元素中指定的默认提供程序。有关配置文件提供程序的更多信息,请参见 ASP.NET 配置文件提供程序。 |
serializeAs |
可选的 SettingsSerializeAs 属性。 指定数据存储区中属性值的序列化格式。默认序列化格式视具体的提供程序而定。实际所使用的序列化由提供程序确定;对于 SQL 提供程序,则为 String序列化。 |
allowAnonymous |
可选的 Boolean属性。 指定在应用程序用户是匿名用户的情况下是否可以获取或设置属性。 如果设置为 true,则在应用程序用户是匿名用户的情况下可以获取或设置属性。 默认值为 false。 |
defaultValue |
可选的 String属性。 如果数据存储区中没有 Profile属性的值,则按如下所示指定默认值: · 如果使用 XML 序列化对属性 (Property) 类型进行了序列化处理,则此属性 (Attribute) 可以设置为表示属性 (Property) 类型的序列化实例的 XML 字符串。 · 如果使用二进制序列化对属性 (Property) 类型进行了序列化处理,则此属性 (Attribute) 可以设置为表示属性 (Property) 类型的序列化实例的 Base-64 编码字符串。 ·如果属性为引用类型,则可以使用 Stringnull值指示 Profile属性应为未初始化的配置文件返回 null。 |
readOnly |
可选的 Boolean属性。 指定是否只能读取而不能设置属性。 如果设置为 true,则可以读取但不可以设置属性。 默认值为 false。 |
customProviderData |
可选的 String属性。 指定 customProviderData属性 (Attribute) 可以设置为任意字符串值,以供属性 (Property) 的配置文件提供程序使用。如果设置了此属性 (Attribute),则该值放置在属性 (Property) 的 Attributes 集合中,通过名称 "CustomProviderData"进行索引。 |
子元素
无。
父元素
元素 |
说明 |
configuration |
指定公共语言运行库和 .NET Framework 应用程序所使用的每个配置文件中的根元素。 |
system.web |
为 ASP.NET 配置节指定根元素。 |
profile |
为应用程序配置用户配置文件。 |
properties |
定义用户配置文件属性和属性组的集合。 |
profile 的 properties 的 clear 元素:
这个没啥好说的,<clear />从用户配置文件中清除以前定义的所有属性和组。
profile 的 properties 的 remove 元素:
<remove name="property name" />:从用户配置文件属性组移除属性。
属性 |
说明 |
name |
必选的 String属性。 指定要从集合中移除的属性定义的名称。 |
profile 的 properties 的 group 元素:
<add />
<remove./>
</group>
属性
属性 |
说明 |
name |
必选的 String属性。 属性组的名称。此值用作自动生成的组配置文件类的标识符。该组的名称不能包含句点 (.)。 有关自动生成用户配置文件属性的更多信息,请参见 ASP.NET 配置文件属性概述。 |
子元素
元素 |
说明 |
add |
可选的元素。 向用户配置文件属性组添加属性。 |
remove |
可选的元素。 从用户配置文件属性组移除属性。 |
profile 的 group 的 add 元素:
name="property name"
type="fully qualified type reference"
provider="provider name"
serializeAs="String|Xml|Binary|ProviderSpecific"
allowAnonymous="true|false"
defaultValue="default property value"
readOnly="true|false"
customProviderData="data for a custom profile provider"
/>
属性
属性 |
说明 |
name |
必选的 String属性。 指定属性名。该值用作自动生成的配置文件类的属性的名称,并用作该属性在 Properties 集合中的索引值。该属性的名称不能包含句点 (.)。 有关自动生成用户配置文件属性的更多信息,请参见 ASP.NET 配置文件属性概述。 |
type |
可选的 String属性。 指定属性类型。 默认值为 String。 |
provider |
可选的 String属性。 指定用于存储和检索属性值的配置文件提供程序。此属性的值是 providers 元素中指定的某个配置文件提供程序的名称。如果未指定提供程序名称,则使用 profile 元素中指定的默认提供程序。有关配置文件提供程序的更多信息,请参见 ASP.NET 配置文件提供程序。 |
serializeAs |
可选的 SettingsSerializeAs 属性。 指定数据存储区中属性值的序列化格式。默认序列化格式视具体的提供程序而定。实际所使用的序列化由提供程序确定;对于 SQL 提供程序,则为 String序列化。 |
allowAnonymous |
可选的 Boolean属性。 指定在应用程序用户是匿名用户的情况下是否可以获取或设置属性。 如果设置为 true,则在应用程序用户是匿名用户的情况下可以获取或设置属性。 默认值为 false。 |
defaultValue |
可选的 String属性。 指定当数据存储区中的 Profile属性没有值时所使用的默认值。 如果使用 XML 序列化对属性 (Property) 类型进行了序列化处理,则此属性 (Attribute) 可以设置为表示属性 (Property) 类型的序列化实例的 XML 字符串。 如果使用二进制序列化对属性 (Property) 类型进行了序列化处理,则此属性 (Attribute) 可以设置为表示属性 (Property) 类型的序列化实例的 Base-64 编码字符串。 如果属性为引用类型,则可以使用 stringnull指示 Profile属性应为未初始化的配置文件返回 null。 |
readOnly |
可选的 Boolean属性。 指定是否只能读取而不能设置属性。 如果设置为 true,则可以读取但不可以设置属性。 默认值为 false。 |
customProviderData |
可选的 String属性。 指定供属性的配置文件提供程序使用的字符串值。此属性可以设置为任何字符串值。 如果设置了 customProviderData属性 (Attribute),则该值放置在属性 (Property) 的 Attributes 集合中,通过名称 "CustomProviderData"进行索引。 |
profile 的 group 的 remove 元素:
<remove name="property name" />
属性 |
说明 |
name |
必选的 String属性。 指定要从集合中移除的属性定义的名称。 |
profile 的 providers 元素:
<add />
<remove/>
<clear/>
</providers>
子元素
元素 |
说明 |
add |
可选的元素。 向配置文件提供程序的集合添加提供程序。 |
clear |
可选的元素。 从配置文件提供程序的集合中移除提供程序。 |
remove |
可选的元素。 从集合中清除以前定义的所有配置文件提供程序。 |
profile 的 providers 的 add 元素:
name="provider name"
type="fully qualified type reference"
connectionStringName="connection string identifier"
commandTimeout="number of seconds before a command times out"
description="description of the provider instance"
applicationName="application name for stored profile information"
/>
属性
属性 |
说明 |
name |
必需的 String属性。 指定提供程序实例的名称。这是用于 <profile> 元素的 defaultProvider属性的值,该值将提供程序实例标识为默认的配置文件提供程序。该提供程序的 name还用于在 Providers 集合中对该提供程序进行索引。 |
type |
必需的 String属性。 指定实现 ProfileProvider 抽象基类的类型。 |
connectionStringName |
必需的 String属性。 指定在 <connectionStrings> 元素中定义的连接字符串的名称。指定的连接字符串将由正在添加的提供程序使用。 |
applicationName |
可选的 String属性。 指定数据源中存储配置文件数据的应用程序的名称。该应用程序名称使得多个 ASP.NET 应用程序能够使用同一个数据库,而不会遇到不同应用程序存在重复配置文件数据的情况。或者,通过指定相同的应用程序名称,多个 ASP.NET 应用程序可以使用相同的配置文件信息。 如果未指定此属性 (Attribute),则 .NET Framework 附带的配置文件提供程序使用 ApplicationName 属性 (Property) 的 ApplicationVirtualPath 值。 |
commandTimeout |
可选的 Int32属性。 指定在向成员资格数据源发出的命令超时之前等待的时间(以秒为单位)。SQL 提供程序在创建 SqlCommand对象时,使用该超时属性。默认情况下,ASP.NET 配置中并未设置该属性。因此,使用 ADO.NET 默认值 30 秒。如果设置了该属性,则 SQL 提供程序对向数据库发出的所有 SQL 命令使用已配置的超时值。 默认值为 30(ADO.NET 默认值)。 |
description |
可选的 String属性。 指定配置文件提供程序实例的说明。 |
profile 的 providers 的 remove 元素:
<remove name=" provider name" />:从用户配置文件提供程序集合中移除配置文件提供程序实例。
属性 |
说明 |
name |
必选的 String属性。 要从集合中移除的配置文件提供程序对象的名称。 |
profile 的 providers 的 clear 元素:
<clear/>:从用户配置文件提供程序集合中移除所有配置文件提供程序实例。