проблема с членством в asp - PullRequest
0 голосов
/ 17 апреля 2009

У меня есть следующий код:

        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.

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2009

Проблема с оператором if . Причина, по которой он не работает, заключается в том, что метод FindUsersByName возвращает коллекцию MembershipUsers. Возможно, нет никаких пользователей, но коллекция все еще возвращается.

Пожалуйста, измените утверждение на следующее ...

if (Membership.FindUsersByName(username).Count == 0)
{
    Membership.CreateUser(username, password, email);
}

Это должно сделать это.

0 голосов
/ 17 апреля 2009

Попробуйте это. Я считаю, что вы не передаете все параметры.

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;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...