Question

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.

No correct solution

OTHER TIPS

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top