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