我在以用户身份登录时从Controller方法中调用此方法,MVC5中的标准DefaultMembershipProvider代码完全开箱即用。像这样:
string LoggedInUsersId = User.Identity.GetUserId();
调试时,此方法调用返回的GUID与存储在AspNetUsers表中的“Id”字段GUID完全不同。由于我在这个表中只有一个用户,我不知道这个其他GUID来自哪里?
我认为当您调用User.Identity.GetUserId()时,将为当前登录的用户返回AspNetUsers表中的Id字段值?
我肯定会检查相同的数据库/环境并查看正确的位置。
答案 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") { }
现在它可以工作,所有内容都集中保存到我的应用程序的主数据库中。