Problem: when creating a user, when the user name already exists, the returned error message is "an error occurred when registering a new user .". It is strange that there is an enumeration value "DuplicateUserName" in the returned status of the user to be created. Why does it prompt "An error occurred when registering a new user ." What about it?
After reading the source code (\ src \ Controls \ User \ CreateUser. cs), after calling the User Creation logic (CreateUserStatus createUserStatus = Users. create (user, true);), only one judgment is made: createUserStatus = CreateUserStatus. created, status = System. web. security. membershipCreateStatus. success; for example, the initial value of status is System. web. security. membershipCreateStatus. providerError. In this way, after the user name is repeated, the status is still System. web. security. membershipCreateStatus. providerError. An error occurred.
Modify the code:
Try
{
CreateUserStatus createUserStatus = Users. Create (user, true );
Switch (createUserStatus)
{
Case CreateUserStatus. Created:
Status = System. Web. Security. MembershipCreateStatus. Success;
Break;
Case CreateUserStatus. DuplicateUsername:
Status = System. Web. Security. MembershipCreateStatus. DuplicateUserName;
Break;
Case CreateUserStatus. DuplicateEmailAddress:
Status = System. Web. Security. MembershipCreateStatus. DuplicateEmail;
Break;
Case CreateUserStatus. DuplicateNickname:
// The nickname already exists.
PlaceHolderNicknameValidator. ErrorMessage = CommunityServer. Components. ResourceManager. GetString ("CreateNewAccount_CreateUserStatus_DuplicateNickname ");
PlaceHolderNicknameValidator. IsValid = false;
Return;
Default:
Status = System. Web. Security. MembershipCreateStatus. ProviderError;
Break;
}
}
Catch (System. Web. Security. MembershipCreateUserException exception)
{
Status = exception. StatusCode;
}
After modification, when the user name is repeated, the error message is "sorry, your account has been registered .".