在dotnetnuke中创建用户并使用c#分配角色

时间:2014-11-11 11:38:58

标签: c# dotnetnuke

我试图在dnn中使用C#以编程方式创建用户。当我执行下面的代码时,它会抛出对象引用错误。我试图打破代码,我发现它没有进入if (result == UserCreateStatus.Success)语句。每当我将鼠标指向结果瞬间时,它都会显示无效的密码消息。问题是我在其他地方使用过相同的代码并且工作正常。我甚至复制了我之前使用过的东西,但它仍然显示出同样的错误。请问我有什么遗失的吗?

//Generating 8 char passwor
Random adomRng = new Random();
string rndString = string.Empty;
char c;
for (int i = 0; i < 8; i++)
{
   while (!Regex.IsMatch((c = Convert.ToChar(adomRng.Next(48, 128))).ToString(), "[A-Za-z0-9]")) ;
   rndString += c;
}

string space = " ";
UserInfo oUser = new UserInfo();
oUser.PortalID = this.PortalId;
oUser.IsSuperUser = false;
oUser.FirstName = Session["fname"].ToString();
oUser.LastName = Session["lname"].ToString();
oUser.Email = Session["email"].ToString();
oUser.Username = Session["username"].ToString();
oUser.DisplayName = Session["fname"].ToString() + space.ToString() + Session["lname"].ToString();

//Fill MINIMUM Profile Items (KEY PIECE)
oUser.Profile.PreferredLocale = PortalSettings.DefaultLanguage;
//oUser.Profile.PreferredTimeZone =PortalSettings.TimeZoneOffset;
oUser.Profile.FirstName = oUser.FirstName;
oUser.Profile.LastName = oUser.LastName;

//Set Membership 17:
UserMembership oNewMembership = new UserMembership();
oNewMembership.Approved = true;
oNewMembership.CreatedDate = System.DateTime.Now;
oNewMembership.Email = oUser.Email;
oNewMembership.IsOnLine = false;
oNewMembership.Username = oUser.Username;
oNewMembership.Password = rndString;

UserCreateStatus result = UserController.CreateUser(ref oUser);

if (result == UserCreateStatus.Success)
{
   RoleController oDnnRoleController = new RoleController();

   //Get the role information
   RoleInfo oCurrentRole = oDnnRoleController.GetRoleByName(this.PortalId, Request.QueryString["TSORole"].ToString());
   // RoleInfo oCurrentRole1 = oDnnRoleController.GetRoleByName(this.PortalId, " Subscribers");
   //Assign to user
   oDnnRoleController.AddUserRole(this.PortalId, oUser.UserID, oCurrentRole.RoleID, Null.NullDate, Null.NullDate);
   // oDnnRoleController.DeleteUserRole(this.PortalId, int.Parse(oUser.UserID.ToString()), oCurrentRole.RoleID);
}

1 个答案:

答案 0 :(得分:1)

相同代码适用于一个而不适用于其他代码的原因可能是这些网站的不同密码规则。确保您生成的密码符合目标网站的密码要求。

Sample settings