一、基本內(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ù)可以是簡(jiǎn)單數(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ū)嵗?div style="height:15px;">