1

我正在尝试使用 DNN 7 服务框架创建用户。我从我的自定义注册模块中获取了我的工作代码,并修改为在 DNN webapi 函数中工作。

当我在下面的代码中调用 UserController.CreateUser 时,我收到一个

"\"There was an error generating the XML document.\""    

例外。我的用户进入了 aspnet_Users 表和 DNN 用户表,但没有进入 DNN 用户门户表。任何想法,将不胜感激。

private void CreateUser()
    {
        //Update DisplayName to conform to Format
        UpdateDisplayName();

        User.Membership.Approved = PortalSettings.UserRegistration == (int)Globals.PortalRegistrationType.PublicRegistration;
        var user = User;

        CreateStatus = UserController.CreateUser(ref user);
4

2 回答 2

1

我终于找到了问题。我没有为我的新用户设置门户 ID,并且 DNN 在将它们添加到门户时除外。在 CreateUser 调用之前只需要 User.PortalId = 0。

于 2013-06-10T10:54:16.240 回答
0

我通过反复试验发现,创建可行的 DNN 用户所需的最低要求是:

UserInfo uiNewUser = new UserInfo();
uiNewUser.Username = "<myUsername>";
uiNewUser.Displayname = "<myDisplayname>";
uiNewUser.Email = "<myUserEmail>";
UserMembership newMembership = new UserMembership(uiNewUser);
newMembership.Password = "<myUserPassword>";
uiNewUser.Membership = newMembership;
uiNewUser.PortalID = <myPortalID>;
DotNetNuke.Security.Membership.UserCreateStatus uStatus;
uStatus = DotNetNuke.Security.Membership.MembershipProvider.Instance().CreateUser(ref uiNewUser);
RoleInfo newRole = RoleController.Instance.GetRoleByName(uiNewUser.PortalID, "Registered Users");
RoleController.Instance.AddUserRole(uiNewUser.PortalID, uiNewUser.UserID, newRole.RoleID, (RoleStatus)1, false, DateTime.MinValue, DateTime.MaxValue);

如果遗漏了其中任何一个,则会在数据库中创建部分用户,但该用户可能在用户的管理员列表中不可见,或者可能会生成异常。其他细节可以稍后添加。

于 2016-10-02T07:39:51.343 回答