public async Task <IdentityResult> RegisterUserAsync(RegisterViewModel model) { using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.RepeatableRead }, TransactionScopeAsyncFlowOption.Enabled)) { var result = IdentityResult.Failed(); try { var user = new IdentityUser { UserCode = IdentityGenerator.RandomUserNumeral20(), UserName = model.UserName }; if (model.IdentityType != IdentityTypes.UserName) { user.UserName = IdentityGenerator.RandomUserName(); } result = await UserManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(result); } switch (model.IdentityType) { case IdentityTypes.PhoneNumber: break; case IdentityTypes.Email: break; default: break; } ////var role = await RoleManager.FindByIdAsync("0"); //result = await UserManager.AddAccountAttributeAsync(user.Id, new Microsoft.AspNet.Identity.Framework.ExternalAttributeInfo { AccountType = 0 }); //if (!result.Succeeded) //{ // return result; //} scope.Complete(); } catch (Exception ex) { result = IdentityResult.Failed(ex.Message); } finally { } return(result); } }