我正在尝试使用DNN 7服务框架创建用户。我从我的自定义注册模块中获取了我的工作代码,并修改为在DNN webapi函数中工作。
当我在下面的代码中进入UserController.CreateUser调用时,我收到了
"\"There was an error generating the XML document.\""
异常。我的用户进入aspnet_Users表和DNN用户表,但没有进入DNN userportals表。任何想法都将不胜感激。
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);
答案 0 :(得分:1)
我终于找到了这个问题。我没有为我的新用户设置门户网站ID,DNN在将它们添加到门户网站时除外。在CreateUser调用之前,所有这一切都是User.PortalId = 0.
答案 1 :(得分: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);
如果错过了其中任何一个,则会在数据库中创建部分用户,但用户可能无法在管理员用户列表中看到,或者可能会生成异常。其他细节可以在以后添加。