I am using ASP.NET MVC5 and Identity 2.0 (beta).

It is possible for users to change the username?

I am trying using UserManager.UpdateAsync method throws an exception.

Regrads,

Fran.

没有正确的解决方案

其他提示

Yes it is possible using the UpdateAsync method but you need to ensure that you update both the email and username fields.

var user = userManager.FindById(userId);
user.Email = email;
user.UserName = email;

var updateResult = await userManager.UpdateAsync(user);

This method works successfully for me

This works for me:

 public async Task<ActionResult> ChangeUsername(string value)
        {
            if (UserManager.Users.Where(x => x.UserName == value).FirstOrDefault() == null) //chk for dupes
            {
                var user = UserManager.FindById(User.Identity.GetUserId());
                user.UserName = value;
                var updateResult = await UserManager.UpdateAsync(user);
                store.Context.SaveChanges();

                await SignInAsync(user,true);//user is cached until logout so do this to clear cache                
                return Content("true");
            }
            throw new HttpException(500, "Please select a different username");
        }

Maybe it's not so beautiful, but try this:

db.Database.ExecuteSqlCommand("update AspNetUsers set UserName=" + NewUserName + " where UserName = " + OldUserName);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top