C# Sitecore asp.net编辑自定义用户配置文件属性

C# Sitecore asp.net编辑自定义用户配置文件属性,c#,asp.net,sitecore,sitecore7,C#,Asp.net,Sitecore,Sitecore7,我在用户配置文件上有一个字段,对应于另一个系统中的id。我想在用户访问激活链接时设置此选项。在另一个系统中注册用户后,我添加了一个角色,并将其成员资格批准设置为true。我收到一个错误,说我无法设置匿名用户的属性,所以我移动到角色/激活后分配id的位置,但是我仍然收到相同的错误 private bool SetCustomId(string username, Guid id) { var userProfile = ((User)User.FromName(username, Acc

我在用户配置文件上有一个字段,对应于另一个系统中的id。我想在用户访问激活链接时设置此选项。在另一个系统中注册用户后,我添加了一个角色,并将其成员资格批准设置为true。我收到一个错误,说我无法设置匿名用户的属性,所以我移动到角色/激活后分配id的位置,但是我仍然收到相同的错误

private bool SetCustomId(string username, Guid id)
{

    var userProfile = ((User)User.FromName(username, AccountType.User)).Profile;
    userProfile.SetCustomProperty("MyIdField", id.ToString());
    userProfile.Save();//error thrown here
}
用户配置文件是我所期望的,当我在为用户分配角色的文章之后移动它时,他们确实拥有我所期望的角色


以下是实际的例外情况:无法为匿名用户设置此属性。

请尝试User.FromNameusername,改为true。布尔参数告诉它将用户视为已验证。

请尝试user.FromNameusername,改为true。布尔参数告诉它将用户视为已验证。

您需要初始化用户,请尝试以下代码:

userProfile.Initialize(username, true);

您需要初始化用户,请尝试以下代码:

userProfile.Initialize(username, true);
试试这个:

私有bool SetCustomIdstring用户名,Guid id { 使用New Sitecore.Security.Accounts.UserSwitcherSitecore.Security.Accounts.User.FromNameusername,false; { var userProfile=UserUser.fromname用户名,AccountType.User.Profile; userProfile.SetCustomPropertyMyIdField,id.ToString; userProfile.Save; } } 试试这个:

私有bool SetCustomIdstring用户名,Guid id { 使用New Sitecore.Security.Accounts.UserSwitcherSitecore.Security.Accounts.User.FromNameusername,false; { var userProfile=UserUser.fromname用户名,AccountType.User.Profile; userProfile.SetCustomPropertyMyIdField,id.ToString; userProfile.Save; } }
嗯,好吧。这完全是基于错误消息才有意义的。知道为什么我在给用户角色/启用属性后不能设置属性吗?我假设authenticated与enabled相同,这可能是错误的。可能认证意味着在线/当前登录或类似的东西。是的,认证意味着登录。如果未对用户设置IsAuthenticated标志,则基础角色提供程序将假定该用户是匿名的。默认情况下,不能对匿名用户设置配置文件属性。嗯,好的。这完全是基于错误消息才有意义的。知道为什么我在给用户角色/启用属性后不能设置属性吗?我假设authenticated与enabled相同,这可能是错误的。可能认证意味着在线/当前登录或类似的东西。是的,认证意味着登录。如果未对用户设置IsAuthenticated标志,则基础角色提供程序将假定该用户是匿名的。默认情况下,无法对匿名用户设置配置文件属性。