2009-04-17 13 views
0

Ich habe den folgenden Code:Problem mit asp Mitgliedschaft

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

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

Daten werden in der aspnet_Users und aspnet_UsersInRoles eingeführt wird, sondern Daten werden in der aspnet_membership nicht eingeführt ist, und ich brauche diese Daten als ich das bin mit ASP-Login-Kontrolle.

kann mir jemand helfen?

Antwort

0

Das Problem ist, mit der wenn Aussage. Der Grund, warum es nicht funktioniert, ist, weil die Methode FindUsersByName eine Auflistung von MembershipUsers zurückgibt. Möglicherweise sind keine Benutzer vorhanden, aber eine Sammlung wird immer noch zurückgegeben.

Bitte geben Sie die Anweisung der folgenden ändern ...

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

Das sollte es tun.

+0

danke funktioniert jetzt perfekt –

0

Probieren Sie es aus. Ich glaube, du überholst nicht alle Parameter.

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

immer noch das gleiche Problem. und der Membership.createuser hat eine Überschreibung mit 3 Parametern genau wie mein Beispiel. –