读书人

十、使用用户配置文件

发布时间: 2012-10-29 10:03:53 作者: rapoo

10、使用用户配置文件
使用用户配置文件

Asp.net Framework提供了一种可选的不同于cookie和Session状态的方式存储用户信息:Profile对象。
Profile对象提供强类型、可持久化的Session状态表单。

web.config



Profile属性
name
type
defaultValue
readOnly
serializeAs
allowAnonymous
provider
customProviderData

2011-5-16 16:34 danny




web.config


显示:ShowProfile.aspx

1、创建用户配置文件组
通过用户分组来进行更多配置
web.config


显示应用Profile组
ShowProfileGroups.aspx

显示结果:


2、支持匿名用户
web.config


ShowAnonymousIdentification.aspx


显示结果:
匿名

登录

匿名和登录显示次数是不一样的。

2011-5-16 21:15 danny


3、合并匿名用户配置文件
前面例子可知道匿名和登录显示次数是不一样的。
当用户从匿名切换到验证状态时,所有的用户配置信息会丢失。
如果在Profile对象中存储了购物车,登录后则所有的购物车项目会丢失。
可以在用户从匿名切换到验证状态时,处理Global.asax文件中的MigrateAnonymous事件,预存Profile属性的值。
该事件在拥有用户配置的用户登录时触发。

只需在Global.asax中加入以下代码:


显示ShowProfile.aspx


显示结果:

当在一个类中定义Profile属性时,可以使用下面的特性修饰那些属性
SettingAllowAnonymouse --用于允许匿名用户读写特性
ProfileProvider --用于关联属性到一个特定的Profile提供程序
CustomProviderData   --用于传递自定义数据到Profile提供程序

5、创建复杂Profile属性
Profile属性表示复杂的类
App_code\ShoppingCart.cs


显示及操作界面:ShowShoppingCart.aspx


显示结果:
开始没有数据

添加数据

其中的奥秘在于App_Data\ASPNETDB.MDF(如果没有选择网站,单击右键,选中添加ASP.NET文件夹,然后选中App_Data,选中App_Data刷新即可)
打开数据库,其中有一张表:aspnet_Profile,查看数据:
UserID     用户的ID
PropertyNames  属性名称
PropertyValuesString 属性值
PropertyValuesBinary  Image 应该是保存图片
LastUpdateDate  最后更新时间

UserID :154cf3d3-70de-472c-8004-8931b29c48b6 不知道按什么算法算出来的。
PropertyNames:ShoppingCart:S:0:562: ShoppingCart为属性名,: 为分隔符,0:表示分段位置,562为长度,当有多个值时0的值和562值就比较明显
PropertyValuesString:


PropertyValuesBinary :没有细细研究。
LastUpdateDate:2011-5-16 14:13:00

补充:
Profile属性关联的serializeAs特性
Binary
ProviderSpecific
String
xml

Xml Serializer比 Binary Serializer臃肿。

App_code/ShoppingCart.cs


可能就保存在PropertyValuesBinary中。
查看数据库,发现PropertyValuesString为空。
证明了以前的想法。

2011-5-16 22:28 danny

6、自动保存用户配置
注意两点:
web.config

automaticSaveEnabled="false"

Glabal.asax


2011-5-17 10:00 danny

9、配置用户配置提供程序
默认情况下,用户配置数据保存在应用程序的App_Data文件夹下的名叫ASPNETDB.mdf的数据库中。
P138

10、创建自定义用户配置提供程序
P138-P142

2011-5-17 10:18 danny



读书人网 >编程

热点推荐