【问题标题】:umbraco membership createuser & select profile dataumbraco 会员创建用户并选择个人资料数据
【发布时间】:2013-03-26 12:43:42
【问题描述】:

我创建了一个类来处理使用自定义字段创建会员用户。

我是根据这个解决方案完成的:

现在我正在尝试使用创建用户并获取配置文件数据:

if (Membership.GetUserNameByEmail(email) == null)
{
MembershipUser member = Membership.CreateUser(username, password, email);

Roles.AddUserToRole(username, "WebsiteUsers");

CCL.MemberProfile currentProfile = CCL.MemberProfile.CurrentUser;

bool exists = currentProfile != null;
Response.Write(exists.ToString());
}

currentProfile 正在返回 null

所以我无法将表单中的值分配给我的成员自定义属性,这些属性由类中设置的属性处理:(

我不明白如何让它工作:(

有人有什么想法吗?谢谢

【问题讨论】:

    标签: asp.net umbraco profile membership


    【解决方案1】:

    建议一:

    确保 ProfileBase.Create 返回可以转换为“MemberProfile”的内容,否则如果不能转换,则只会返回 NULL。

    建议 2:

    确保您正在运行的上下文有一个登录用户,这样您对 Membership.GetUser() 的调用就可以找到当前的用户对象。

    其他想法:

    ProfileBase.Create 方法假定您传入的用户名是经过身份验证的用户,我不确定当用户未经过身份验证时它的行为..也许它返回 NULL?

    【讨论】:

    • 感谢@g7876413,我验证了用户,因此它正确返回了currentProfile。但是,当我尝试分配我的自定义值时:currentProfile.FullName = "Lucy"; currentProfile.Save(); 它不起作用:(有什么建议吗?
    • 对不起@user1611620,我唯一可以建议的另一件事是检查您对“MemberProfile”类的实现,在您引用“全名”属性上的 set 方法的示例中似乎正在调用 Save( ) 以及设置值,因此您不需要在自己设置值后调用它。还要检查你没有重新实现 Save() 并让它做任何与 base.Save() 不同的事情。
    • 1.我在 web.config 中定义了自定义属性,但它们导致错误“属性已定义”,因此我删除了该部分 - 将其放回原处后它开始工作。我更改了属性的名称(在 umbraco 和 web.config 中的成员类型中),因为我的类中给出的相同名称导致了上述错误。 2. 我更改了脚本以在身份验证后更新会员资料——这需要重新加载页面。在用户通过身份验证/重新加载页面之前,将成员添加到角色并不能正常工作。总结:感谢@g7876413 的建议,因为它引导我走向正确的方向
    • 没问题@user1611620 很高兴至少能提供一点帮助,也感谢您发布解决方案:)
    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多