問題:在建立使用者時,當使用者名稱已經存在時,返回的錯誤提示是“註冊新使用者的時候產生了一個錯誤。”。很奇怪,明明在建立使用者的返回狀態中有一個枚舉值“DuplicateUserName”,為什麼會提示“註冊新使用者的時候產生了一個錯誤。”呢?
看了原始碼後(\src\Controls\User\CreateUser.cs),發現在調用建立使用者的邏輯後(CreateUserStatus createUserStatus = Users.Create(user, true);),僅作了一個判斷:createUserStatus=CreateUserStatus.Created,status = System.Web.Security.MembershipCreateStatus.Success;如status 的初始值為System.Web.Security.MembershipCreateStatus.ProviderError,這樣在使用者名稱重複後,status未被重新設定,仍然為System.Web.Security.MembershipCreateStatus.ProviderError,這樣就出現錯誤提示:註冊新使用者的時候產生了一個錯誤。
修改代碼為:
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:
// 暱稱已經存在
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;
}
修改後,當使用者名稱重複時,錯誤提示為“對不起,您輸入的帳號已被註冊。”。