如何解析PropertyName PropertyValue数据?

时间:2009-08-02 18:36:06

标签: asp.net asp.net-membership asp.net-profiles

我正在使用的两个Web应用程序正在使用ASP.NET成员资格,每个应用程序都有用户信息的区域,这些区域在数据库中使用此属性名称/值存储方法。

以下是一个例子:

PropertyNameValues

publicEmail:S:0:19:yahooIM:S:19:0:timezone:S:19:2:commonName:S:21:4:birthdate:S:25:81:signatureFormatted:S:106:0:gender:S:106:1:fontsize:S:107:1:signature:S:108:0:dateFormat:S:108:15:enableEmoticons:S:123:4:webLog:S:127:0:enablePostPreviewPopup:S:127:5:location:S:132:12:bio:S:144:0:webAddress:S:144:0:interests:S:144:0:icqIM:S:144:0:aolIM:S:144:0:language:S:144:5:occupation:S:149:0:msnIM:S:149:0:

PropertyValues

someemailhere@here.com-6Asia<?xml version="1.0" encoding="utf-16"?>
<dateTime>0001-01-01T00:00:00</dateTime>20ddd, MMM d yyyyTrueFalseTest Testing-US

我可以看到它的工作方式的命运,名称值显示属性值字符串中的长度以开始抓取以及何时结束 - 但是是否存在将这些分成数组或其他东西的现有函数?

谢谢!

2 个答案:

答案 0 :(得分:2)

这是如何工作取决于您使用的是“网站”还是“网络应用程序”项目类型。如果您使用的是常规的asp.net网站项目,则可以使用动态生成的Profile对象来从中获取用户属性。

如果您的应用程序是MVC或Web应用程序项目,则必须创建自己的配置文件对象。我建议你抓住web profile builder。此工具创建获取配置文件数据所需的ProfileCommon对象。

一般来说,我个人通过反复曝光发现,asp.net中提供的配置文件提供程序系统对于存储实际用户信息(您正在使用它的类型)非常糟糕。配置文件提供程序机制非常适合用户首选项(通常称为个性化的东西),例如“始终显示详细信息”或“我更喜欢绿色背景”。原因是配置文件系统仅在一个用户的请求内使配置文件数据易于访问。如果您有需要从多个用户的配置文件中读取的管理工具,您会发现性能会很快退化,并且获取配置文件数据实际上非常困难。

出于这些原因,我建议您考虑不使用配置文件系统来存储那里存储的数据类型。滚动自己的表和对象以存储和获取这种特定类型的信息会更好。但是,如果您不需要一次访问多个用户的数据,那么内置配置文件就可以了。

答案 1 :(得分:1)

看起来你指的是ASP.NET Profile system

在aspx页面的代码隐藏中,只需使用Profile.publicEmailProfile.yahooIM等。有一个自动生成的类可以解析出来。有关详细信息,请参阅链接的文章。