1

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

这是一个例子:

属性名称值

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:

属性值

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

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

谢谢!

4

2 回答 2

2

其工作方式取决于您使用的是“网站”还是“Web 应用程序”项目类型。如果您使用的是常规的 asp.net 网站项目,您将拥有一个动态生成的 Profile 对象,您可以使用该对象从中获取用户属性。

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

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

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

于 2009-10-06T22:41:26.410 回答
1

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

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

于 2009-10-06T19:06:23.497 回答