我有以下代码:
if (Membership.FindUsersByName(username) == null)
{
Membership.CreateUser(username, password, email);
}
if (!Roles.RoleExists("USR"))
{
Roles.CreateRole("USR");
}
Roles.AddUserToRole(username,"USR");
数据正在被插入到aspnet_Users和aspnet_UsersInRoles中,但是数据没有被插入到aspnet_membership中,我需要这些数据,因为我正在使用asp登录控件。
有人能帮帮我吗?
发布于 2009-04-17 11:34:24
问题出在if语句上。它不工作的原因是因为FindUsersByName方法返回一个MembershipUsers集合。可能没有任何用户,但仍然会返回一个集合。
请将语句更改为以下内容...
if (Membership.FindUsersByName(username).Count == 0)
{
Membership.CreateUser(username, password, email);
}
这应该就行了。
发布于 2009-04-17 11:25:42
试试这个。我相信你没有传递所有的参数。
string userName = txtUserId.Text;
//this value is either encrypted or hashed and is never displayed
string password = txtPassword.Text;
string email = txtEmail.Text;
string passwordQuestion = ddlPasswordQuestion.SelectedValue;
//this value is either encrypted or hashed and is never displayed
string passwordAnswer = txtPasswordAnswer.Text;
MembershipCreateStatus result;
Membership.CreateUser(userName, password, email, passwordQuestion, passwordAnswer, true,out result);
lblResults.Visible = true;
switch (result) {
case MembershipCreateStatus.Success:
txtUserId.Text = null;
txtPassword.Text = null;
txtEmail.Text = null;
ddlPasswordQuestion.SelectedIndex = -1;
txtPasswordAnswer.Text = null;
lblResults.Text = "User successfully created!";
break;
case MembershipCreateStatus.InvalidUserName:
lblResults.Text = "The username format was invalid. Please enter a different username.";
break;
case MembershipCreateStatus.InvalidPassword:
lblResults.Text = "The password was invalid: A password cannot be an empty string and must also meet the pasword strength requirements of the configured provider. Please enter a new password.";
break;
case MembershipCreateStatus.InvalidEmail:
lblResults.Text = "The email format was invalid. Please enter a different username.";
break;
case MembershipCreateStatus.InvalidQuestion:
lblResults.Text = "The password question format was invalid. Please enter a different question.";
break;
case MembershipCreateStatus.InvalidAnswer:
lblResults.Text = "The password answer format was invalid. Please enter a different answer.";
break;
case MembershipCreateStatus.DuplicateUserName:
lblResults.Text = "The username is already in use. Please enter a new username.";
break;
case MembershipCreateStatus.DuplicateEmail:
lblResults.Text = "The email address is already in use. Please enter a different email address.";
break;
default:
lblResults.Text = "An error occurred while creating the user.";
break;
}
}
https://stackoverflow.com/questions/761809
复制