問題

2009-04-17 6 views
0

私は、次のコードを持っている:問題

 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ログイン制御。

誰かが私を助けることができますか?

答えて

0

問題が if文です。理由は、FindUsersByNameメソッドがMembershipUsersのコレクションを返すためです。ユーザーはいないかもしれませんが、コレクションはまだ返されます。それを行う必要があります

次のように文を変更してください...

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

+0

ありがとうございます –

0

これを試してください。私はあなたがすべてのパラメータを渡していないと信じています。

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

でも同じ問題があります。 membership.createuserは私の例のように3つのパラメータでオーバーライドしています。 –