一、基本內(nèi)容 個(gè)性化用戶配置將配置信息與單個(gè)用戶關(guān)聯(lián),用戶的數(shù)據(jù)存儲(chǔ)在ASP.NET2.o提供的數(shù)據(jù)庫中,所以能夠持久保存。以下幾點(diǎn)需要注意:1.存儲(chǔ)的數(shù)據(jù)可以是與用戶有關(guān)的數(shù)據(jù),如果背景顏色、數(shù)據(jù)顯示的條數(shù)等等。2.所存儲(chǔ)的數(shù)據(jù)可以是簡單數(shù)據(jù)類型,如String、Int等,也可以是開發(fā)人員自己定義的對(duì)象。3.默認(rèn)情況下支持的是注冊(cè)用戶,可以顯示聲明allowAnonymous=true來實(shí)現(xiàn)對(duì)匿名用戶的支持。4.默認(rèn)情況下使用的數(shù)據(jù)庫是SqlExpress,可以通過修改Web.Config文件中的ConnectionString和使用aspnet_regsql工具,實(shí)現(xiàn)對(duì)SqlServer2000數(shù)據(jù)庫的支持。第四部分會(huì)給出具體方法。 二、web.config中<profile>的詳細(xì)配置
 
<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的基本結(jié)構(gòu):
<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 用戶配置文件。
默認(rèn)值為 true。
|
defaultProvider
|
可選的 String屬性。
指定默認(rèn)配置文件提供程序的名稱。
有關(guān)更多信息,請(qǐng)參見 Provider。
默認(rèn)值為 AspNetSqlProfileProvider。
|
inherits
|
可選的 String屬性。
包含從 ProfileBase 抽象類派生的自定義類型的類型引用。ASP.NET 動(dòng)態(tài)地生成一個(gè)從該類型繼承的 ProfileCommon類,并將該類放在當(dāng)前 HttpContext 的 Profile 屬性中。
|
automaticSaveEnabled
|
可選的 Boolean屬性。
指定用戶配置文件是否在 ASP.NET 頁執(zhí)行結(jié)束時(shí)自動(dòng)保存。如果為 true,則用戶配置文件在 ASP.NET 頁執(zhí)行結(jié)束時(shí)自動(dòng)保存。
只有在 ProfileModule 對(duì)象檢測(cè)到某一用戶配置文件已修改的情況下,該模塊才保存該配置文件。也就是在 IsDirty 屬性為 true的情況下。有關(guān)更多信息,請(qǐng)參見 ASP.NET 配置文件屬性。
默認(rèn)值為 true。
|
子元素
元素
|
說明
|
properties
|
必選的元素。
定義用戶配置文件屬性和屬性組的集合。
|
providers
|
可選的元素。
定義配置文件提供程序的集合。
|
父元素
元素
|
說明
|
configuration
|
指定公共語言運(yùn)行庫和 .NET Framework 應(yīng)用程序所使用的每個(gè)配置文件中均需要的根元素。
|
system.web
|
為 ASP.NET 配置節(jié)指定根元素。
|
profile 的 properties 元素:
<properties>
<add />
<clear />
<remove />
<group> </group>
</properties>
子元素
元素
|
說明
|
add
|
可選的元素。
向用戶配置文件添加屬性。
|
clear
|
可選的元素。
從用戶配置文件中清除以前定義的所有屬性。
|
group
|
可選的元素。
定義用戶配置文件屬性的分組。
|
remove
|
可選的元素。
從用戶配置文件中移除屬性。
|
父元素
元素
|
說明
|
configuration
|
指定公共語言運(yùn)行庫和 .NET Framework 應(yīng)用程序所使用的每個(gè)配置文件中均需要的根元素。
|
system.web
|
為 ASP.NET 配置節(jié)指定根元素。
|
profile
|
為應(yīng)用程序配置用戶配置文件。
|
profile 的 properties 的 add 元素:
<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屬性。
指定屬性名。該值用作自動(dòng)生成的配置文件類的屬性的名稱,并用作該屬性在 Properties 集合中的索引值。該屬性的名稱不能包含句點(diǎn) (.)。
有關(guān)自動(dòng)生成用戶配置文件屬性的更多信息,請(qǐng)參見 ASP.NET 配置文件屬性概述。
|
type
|
可選的 String屬性。
指定屬性類型。
默認(rèn)值為 String。
|
provider
|
可選的 String屬性。
指定用于存儲(chǔ)和檢索屬性值的配置文件提供程序。provider屬性的值是 providers 元素中指定的某個(gè)配置文件提供程序的名稱。如果未指定提供程序名稱,則使用 profile 元素中指定的默認(rèn)提供程序。有關(guān)配置文件提供程序的更多信息,請(qǐng)參見 ASP.NET 配置文件提供程序。
|
serializeAs
|
可選的 SettingsSerializeAs 屬性。
指定數(shù)據(jù)存儲(chǔ)區(qū)中屬性值的序列化格式。默認(rèn)序列化格式視具體的提供程序而定。實(shí)際所使用的序列化由提供程序確定;對(duì)于 SQL 提供程序,則為 String序列化。
|
allowAnonymous
|
可選的 Boolean屬性。
指定在應(yīng)用程序用戶是匿名用戶的情況下是否可以獲取或設(shè)置屬性。
如果設(shè)置為 true,則在應(yīng)用程序用戶是匿名用戶的情況下可以獲取或設(shè)置屬性。
默認(rèn)值為 false。
|
defaultValue
|
可選的 String屬性。
如果數(shù)據(jù)存儲(chǔ)區(qū)中沒有 Profile屬性的值,則按如下所示指定默認(rèn)值:
· 如果使用 XML 序列化對(duì)屬性 (Property) 類型進(jìn)行了序列化處理,則此屬性 (Attribute) 可以設(shè)置為表示屬性 (Property) 類型的序列化實(shí)例的 XML 字符串。
· 如果使用二進(jìn)制序列化對(duì)屬性 (Property) 類型進(jìn)行了序列化處理,則此屬性 (Attribute) 可以設(shè)置為表示屬性 (Property) 類型的序列化實(shí)例的 Base-64 編碼字符串。
·如果屬性為引用類型,則可以使用 Stringnull值指示 Profile屬性應(yīng)為未初始化的配置文件返回 null。
|
readOnly
|
可選的 Boolean屬性。
指定是否只能讀取而不能設(shè)置屬性。
如果設(shè)置為 true,則可以讀取但不可以設(shè)置屬性。
默認(rèn)值為 false。
|
customProviderData
|
可選的 String屬性。
指定 customProviderData屬性 (Attribute) 可以設(shè)置為任意字符串值,以供屬性 (Property) 的配置文件提供程序使用。如果設(shè)置了此屬性 (Attribute),則該值放置在屬性 (Property) 的 Attributes 集合中,通過名稱 "CustomProviderData"進(jìn)行索引。
|
子元素
無。
父元素
元素
|
說明
|
configuration
|
指定公共語言運(yùn)行庫和 .NET Framework 應(yīng)用程序所使用的每個(gè)配置文件中的根元素。
|
system.web
|
為 ASP.NET 配置節(jié)指定根元素。
|
profile
|
為應(yīng)用程序配置用戶配置文件。
|
properties
|
定義用戶配置文件屬性和屬性組的集合。
|
profile 的 properties 的 clear 元素: 這個(gè)沒啥好說的,<clear />從用戶配置文件中清除以前定義的所有屬性和組。 profile 的 properties 的 remove 元素:
<remove name="property name" />:從用戶配置文件屬性組移除屬性。
屬性
|
說明
|
name
|
必選的 String屬性。
指定要從集合中移除的屬性定義的名稱。
|
profile 的 properties 的 group 元素:
<group name="group name">
<add />
<remove./>
</group>
屬性
屬性
|
說明
|
name
|
必選的 String屬性。
屬性組的名稱。此值用作自動(dòng)生成的組配置文件類的標(biāo)識(shí)符。該組的名稱不能包含句點(diǎn) (.)。
有關(guān)自動(dòng)生成用戶配置文件屬性的更多信息,請(qǐng)參見 ASP.NET 配置文件屬性概述。
|
子元素
元素
|
說明
|
add
|
可選的元素。
向用戶配置文件屬性組添加屬性。
|
remove
|
可選的元素。
從用戶配置文件屬性組移除屬性。
|
profile 的 group 的 add 元素:
<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屬性。
指定屬性名。該值用作自動(dòng)生成的配置文件類的屬性的名稱,并用作該屬性在 Properties 集合中的索引值。該屬性的名稱不能包含句點(diǎn) (.)。
有關(guān)自動(dòng)生成用戶配置文件屬性的更多信息,請(qǐng)參見 ASP.NET 配置文件屬性概述。
|
type
|
可選的 String屬性。
指定屬性類型。
默認(rèn)值為 String。
|
provider
|
可選的 String屬性。
指定用于存儲(chǔ)和檢索屬性值的配置文件提供程序。此屬性的值是 providers 元素中指定的某個(gè)配置文件提供程序的名稱。如果未指定提供程序名稱,則使用 profile 元素中指定的默認(rèn)提供程序。有關(guān)配置文件提供程序的更多信息,請(qǐng)參見 ASP.NET 配置文件提供程序。
|
serializeAs
|
可選的 SettingsSerializeAs 屬性。
指定數(shù)據(jù)存儲(chǔ)區(qū)中屬性值的序列化格式。默認(rèn)序列化格式視具體的提供程序而定。實(shí)際所使用的序列化由提供程序確定;對(duì)于 SQL 提供程序,則為 String序列化。
|
allowAnonymous
|
可選的 Boolean屬性。
指定在應(yīng)用程序用戶是匿名用戶的情況下是否可以獲取或設(shè)置屬性。
如果設(shè)置為 true,則在應(yīng)用程序用戶是匿名用戶的情況下可以獲取或設(shè)置屬性。
默認(rèn)值為 false。
|
defaultValue
|
可選的 String屬性。
指定當(dāng)數(shù)據(jù)存儲(chǔ)區(qū)中的 Profile屬性沒有值時(shí)所使用的默認(rèn)值。
如果使用 XML 序列化對(duì)屬性 (Property) 類型進(jìn)行了序列化處理,則此屬性 (Attribute) 可以設(shè)置為表示屬性 (Property) 類型的序列化實(shí)例的 XML 字符串。
如果使用二進(jìn)制序列化對(duì)屬性 (Property) 類型進(jìn)行了序列化處理,則此屬性 (Attribute) 可以設(shè)置為表示屬性 (Property) 類型的序列化實(shí)例的 Base-64 編碼字符串。
如果屬性為引用類型,則可以使用 stringnull指示 Profile屬性應(yīng)為未初始化的配置文件返回 null。
|
readOnly
|
可選的 Boolean屬性。
指定是否只能讀取而不能設(shè)置屬性。
如果設(shè)置為 true,則可以讀取但不可以設(shè)置屬性。
默認(rèn)值為 false。
|
customProviderData
|
可選的 String屬性。
指定供屬性的配置文件提供程序使用的字符串值。此屬性可以設(shè)置為任何字符串值。
如果設(shè)置了 customProviderData屬性 (Attribute),則該值放置在屬性 (Property) 的 Attributes 集合中,通過名稱 "CustomProviderData"進(jìn)行索引。
|
profile 的 group 的 remove 元素: <remove name="property name" />
屬性
|
說明
|
name
|
必選的 String屬性。
指定要從集合中移除的屬性定義的名稱。
|
profile 的 providers 元素:
<providers>
<add />
<remove />
<clear/>
</providers>
子元素
元素
|
說明
|
add
|
可選的元素。
向配置文件提供程序的集合添加提供程序。
|
clear
|
可選的元素。
從配置文件提供程序的集合中移除提供程序。
|
remove
|
可選的元素。
從集合中清除以前定義的所有配置文件提供程序。
|
profile 的 providers 的 add 元素:
<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屬性。
指定提供程序?qū)嵗拿Q。這是用于 <profile> 元素的 defaultProvider屬性的值,該值將提供程序?qū)嵗龢?biāo)識(shí)為默認(rèn)的配置文件提供程序。該提供程序的 name還用于在 Providers 集合中對(duì)該提供程序進(jìn)行索引。
|
type
|
必需的 String屬性。
指定實(shí)現(xiàn) ProfileProvider 抽象基類的類型。
|
connectionStringName
|
必需的 String屬性。
指定在 <connectionStrings> 元素中定義的連接字符串的名稱。指定的連接字符串將由正在添加的提供程序使用。
|
applicationName
|
可選的 String屬性。
指定數(shù)據(jù)源中存儲(chǔ)配置文件數(shù)據(jù)的應(yīng)用程序的名稱。該應(yīng)用程序名稱使得多個(gè) ASP.NET 應(yīng)用程序能夠使用同一個(gè)數(shù)據(jù)庫,而不會(huì)遇到不同應(yīng)用程序存在重復(fù)配置文件數(shù)據(jù)的情況?;蛘?,通過指定相同的應(yīng)用程序名稱,多個(gè) ASP.NET 應(yīng)用程序可以使用相同的配置文件信息。
如果未指定此屬性 (Attribute),則 .NET Framework 附帶的配置文件提供程序使用 ApplicationName 屬性 (Property) 的 ApplicationVirtualPath 值。
|
commandTimeout
|
可選的 Int32屬性。
指定在向成員資格數(shù)據(jù)源發(fā)出的命令超時(shí)之前等待的時(shí)間(以秒為單位)。SQL 提供程序在創(chuàng)建 SqlCommand對(duì)象時(shí),使用該超時(shí)屬性。默認(rèn)情況下,ASP.NET 配置中并未設(shè)置該屬性。因此,使用 ADO.NET 默認(rèn)值 30 秒。如果設(shè)置了該屬性,則 SQL 提供程序?qū)ο驍?shù)據(jù)庫發(fā)出的所有 SQL 命令使用已配置的超時(shí)值。
默認(rèn)值為 30(ADO.NET 默認(rèn)值)。
|
description
|
可選的 String屬性。
指定配置文件提供程序?qū)嵗恼f明。
|
profile 的 providers 的 remove 元素: <remove name=" provider name" />:從用戶配置文件提供程序集合中移除配置文件提供程序?qū)嵗?br>
屬性
|
說明
|
name
|
必選的 String屬性。
要從集合中移除的配置文件提供程序?qū)ο蟮拿Q。
|
profile 的 providers 的 clear 元素: <clear/>:從用戶配置文件提供程序集合中移除所有配置文件提供程序?qū)嵗?/span>
|