ASP.NET MVC User.Identity.GetUserId()返回错误的GUID

时间:2014-01-01 01:46:59

标签: membership-provider asp.net-mvc-5

我在以用户身份登录时从Controller方法中调用此方法,MVC5中的标准DefaultMembershipProvider代码完全开箱即用。像这样:

 string LoggedInUsersId = User.Identity.GetUserId();

调试时,此方法调用返回的GUID与存储在AspNetUsers表中的“Id”字段GUID完全不同。由于我在这个表中只有一个用户,我不知道这个其他GUID来自哪里?

我认为当您调用User.Identity.GetUserId()时,将为当前登录的用户返回AspNetUsers表中的Id字段值?

我肯定会检查相同的数据库/环境并查看正确的位置。

1 个答案:

答案 0 :(得分:4)

解决!

感谢这篇博文(见第2点): https://digitaltoolfactory.net/blog/2013/10/five-things-should-should-know-about-the-new-asp-net-identity-membership-system/

新的MVC5会员资格已经在我的笔记本电脑上自动创建了一个名为“DefaultConnection”的新本地数据库,它生成并放置了所有成员资格表和数据。所以GetUserId()返回一个GUID,该GUID本地存在于AspNetUsers表中的本地数据库中,该数据库在我的应用程序正在使用的另一个主数据库中不存在!尔加。

因此修复程序正在改变IdentityModels.cs中的这一行:

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

为:

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

现在它可以工作,所有内容都集中保存到我的应用程序的主数据库中。