我使用 ASP.Net Identity,它按预期工作,除非关联外部登录提供程序。
例如,当我调用 Repository.UserManager.AddLogin()
(或 Async)时,我收到异常:
The UserId field is required.
在调试时,我确保将正确的 userId
传递给函数,我什至对其进行了硬编码。
对于loginInfo
,我尝试了 Facebook 和 Google 提供商。
在监 window 口中,我们可以看到我正确地为该方法指定了用户 ID,并且在监 window 口中 User.Id
具有正确的值,而 userId
为null
。
不幸的是,源代码尚未在 Codeplex 上公开,因此我无法查看实现。
最佳答案
我设法通过重新安装(更新)对 EntityFramework 和 Microsoft.AspNet.Identity 的引用来解决此问题。
但是,这将导致与现有 CodeFirst 迁移和数据库不兼容。
由于我的服务尚未上线,因此删除数据库并重新创建迁移对我来说不是问题,但对于已经运行的服务来说,这可能会破坏交易。
我还做了什么,更改了 IdentityModels.cs 函数 onModelCreating 中的一行:
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
至:
modelBuilder.Entity<IdentityUserLogin>().HasKey(l => new { l.UserId, l.LoginProvider, l.ProviderKey });
关于c# - ASP.Net Identity - AddLogin userId 变为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21814841/