Sitecore GetCustomPropertyNames不会返回自定义配置文件的所有可用字段名

Sitecore GetCustomPropertyNames不会返回自定义配置文件的所有可用字段名,sitecore,sitecore6,Sitecore,Sitecore6,我试图构建一个表单,将一组用户配置文件的值从一个字段复制到另一个字段。通过使用user.profile.ProfileItemId检查配置文件ID,我已经检查了所有用户是否分配了相同的配置文件,并且我还在用户管理器工具中为一些用户检查了相同的内容。 在将值从一个字段移动到另一个字段之前,我想检查输入的字段名是否确实存在于当前用户的配置文件中,因此我为每个用户的配置文件调用GetCustomPropertyNames,并检查该字段名是否存在于该方法返回的字段名列表中。 我注意到,对于某些用户,并非

我试图构建一个表单,将一组用户配置文件的值从一个字段复制到另一个字段。通过使用user.profile.ProfileItemId检查配置文件ID,我已经检查了所有用户是否分配了相同的配置文件,并且我还在用户管理器工具中为一些用户检查了相同的内容。 在将值从一个字段移动到另一个字段之前,我想检查输入的字段名是否确实存在于当前用户的配置文件中,因此我为每个用户的配置文件调用GetCustomPropertyNames,并检查该字段名是否存在于该方法返回的字段名列表中。 我注意到,对于某些用户,并非所有字段名都返回。缺少的字段在“用户详细信息”对话框中列出,没有值的字段为空。为未列出的字段添加值或清除列出的字段似乎不会改变GetCustomPropertyNames方法的结果。
是否有任何必须事先执行的特殊命令,或是否有任何必须满足的特殊条件,以确定返回整个可用字段名集的方法?

是否可以尝试这样做:

var userList = Sitecore.Security.Accounts.UserManager.GetUsers();


foreach (Sitecore.Security.Accounts.User user in userList)
{
    Sitecore.Security.UserProfile profile = user.Profile;
    string whatever = profile["Field Name"];

}
ASP.NET配置文件用于存储和检索数据源(如数据库)中的用户设置。使用当前HttpContext的profile属性访问用户配置文件。配置文件信息和属性值使用配置文件提供程序进行管理。
Sitecore默认使用的SqlProfileProvider由ASP.NET用于存储和检索使用SQL Server数据库的ASP.NET应用程序的配置文件设置。

是否尝试查看这些字段是否位于Sitecore.Context.User.profile.GetPropertyValueproperty中?@xoail我没有使用上下文用户,而是迭代属于特定域的一组用户。但是,我已经尝试了您建议的方法,对于GetCustomPropertyNames有问题的用户,它会引发PropertyNotFound异常。但是,我对GetCustomPropertyNames返回的自定义字段进行了尝试,得到了相同的结果。它似乎只返回UserProfile类的属性值。它谈到了如何使用sitecore客户端,但它帮助解决了类似的问题。这似乎与user.Profile.GetCustomPropertydestinationProperty的结果相同,它返回一个空字符串。在尝试设置属性之前,我希望能够验证用户的配置文件是否具有该属性。在用户管理器上,您是否看到自定义属性?您是否有新的用户配置文件,并且用户正在继承此配置文件?是的,我有一个名为CustomUser的配置文件,其中包含一些附加字段。我检查了所有用户是否继承该配置文件。我可以在用户管理器中看到自定义属性,或者更准确地说,在“编辑用户”对话框窗体中的“配置文件”选项卡中看到自定义属性。嗯,这真的很奇怪,我检查了我的解决方案,它按预期工作,我建议您向Sitecore支持部门询问此问题。感谢您的检查,但“按预期”是什么意思?正如我在第一条评论中所说,profile[field name]返回的结果与profile.GetCustomPropertyfield name相同。换句话说,如果找到字段,则返回其值;如果没有找到,则返回空字符串。此行为是不明确的,因为它可以找到字段,并且其值可以设置为空字符串。我需要能够区分查找值为空字符串的自定义字段和根本不查找字段,这就是我使用profile.GetCustomPropertyNames的原因。