2009-04-17 4 views
0

j'ai le code suivant:avec l'appartenance asp

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

     if (!Roles.RoleExists("USR")) 
     { 
      Roles.CreateRole("USR"); 
     } 
     Roles.AddUserToRole(username,"USR"); 

données est inséré dans le aspnet_Users et aspnet_UsersInRoles, mais les données ne sont pas inséré dans le aspnet_membership et je besoin de ces données que j'utilise la contrôle de connexion asp.

Quelqu'un peut-il m'aider?

Répondre

0

Le problème est avec la déclaration si. La raison pour laquelle cela ne fonctionne pas est que la méthode FindUsersByName renvoie une collection de MembershipUsers. Il se peut qu'il n'y ait aucun utilisateur, mais une collection est toujours renvoyée.

S'il vous plaît changer la déclaration qui suit ...

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

Cela devrait le faire.

+0

merci fonctionne parfaitement maintenant –

0

Essayez-le. Je crois que vous ne passez pas tous les paramètres.

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

}

+0

toujours le même problème. et le membership.createuser a un override avec 3 paramètres comme mon exemple. –