ASP.NET MVC User.Identity.GetUserId() возвращает неправильный GUID

Я вызываю этот метод из метода Controller при входе в систему как пользователь, со стандартным кодом DefaultMembershipProvider в MVC5, который поставляется полностью из коробки. Как это:

 string LoggedInUsersId = User.Identity.GetUserId();

При отладке этот вызов метода возвращает GUID, который полностью отличается от GUID поля "Id", хранящегося в таблице AspNetUsers. Поскольку в этой таблице только один пользователь, я понятия не имею, откуда этот другой GUID?

Я думал, что значение поля Id из таблицы AspNetUsers будет возвращено для текущего вошедшего в систему пользователя, когда вы вызываете User.Identity.GetUserId()?

Я определенно проверяю ту же базу данных / среду и смотрю в нужном месте.

1 ответ

Решение

Решено!

Благодаря этому сообщению в блоге (см. Пункт № 2): https://digitaltoolfactory.net/blog/2013/10/five-things-should-should-know-about-the-new-asp-net-identity-membership-system/

Новый членский состав MVC5 автоматически создал новую локальную базу данных на моем ноутбуке под названием DefaultConnection, где он сгенерировал и разместил все таблицы членства и данные. Так GetUserId() возвращал GUID, который находился локально в таблице AspNetUsers из той локальной базы данных, которой не было в моей другой основной базе данных, которую использовало приложение! Гах.

Таким образом, исправление изменило эту строку внутри IdentityModels.cs:

 public ApplicationDbContext() : base("DefaultConnection") { }

чтобы:

 public ApplicationDbContext() : base("MyConnectionString") { }

Теперь это работает, и все централизованно сохраняется в основной базе данных моего приложения.

Другие вопросы по тегам