gpt4 book ai didi

c# - ASP.NET Core 2 - GetUserIdAsync 返回带有 Guid ID 的空结果

转载 作者:行者123 更新时间:2023-11-30 23:05:37 27 4
gpt4 key购买 nike

我目前正在将一个网站移植到 ASP.NET Core 2,当我调用 userManager.GenerateEmailConfirmationTokenAsync(user) 时抛出以下异常使用扩展 IdentityUser<Guid> 的用户类:

System.ArgumentNullException: Value cannot be null.
Parameter name: value
at System.IO.BinaryWriter.Write(String value)
at Microsoft.AspNetCore.Identity.DataProtectorTokenProvider`1.<GenerateAsync>d__11.MoveNext()

GenerateAsync() 调用 UserManager.GetUserIdAsync() ,返回 null Result 中的值,这Write()正在提示,即使 User我经过的实例有 07c0423e-f36b-1410-8007-800000000000Id .

如果我调用 userManager.GetUserIdAsync(user)直接上同UserManager我正在调用的实例 GenerateEmailConfirmationTokenAsync()我得到了同样的 null Result 中的值.

有没有人知道如何解决这个问题?

编辑:根据要求,可以在github.com/BenjaminNolan/GetUserIdAsyncNullExample 找到一个功能示例。

最佳答案

您遇到的问题是 these lines来自你的 User类:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[DefaultValue("NEWSEQUENTIALID()")]
new public Guid Id { get; set; }

您对 new modifier 的使用这里抑制了以下编译器警告:

'User.Id' hides inherited member 'IdentityUser.Id'.

此警告通知您,如果您访问 Id通过 User引用(而不是例如 IdentityUser<Guid> 引用 - 基类),您将使用不同 Id属性(property)。如果您检查 user.Id 的值,您可以看到它的样子在您的 Controller 中并将其与 ((IdentityUser<Guid>)user).Id 的值进行比较(转换为基类以访问它的 Id 属性)。

在您的情况下很容易修复 - 只需删除 Id来自您的属性(property) User类:您已经指定现有的 Id来自 IdentityUser<TKey> 的属性(property)将是 Guid 类型并且它已经配置为 key 等。

关于c# - ASP.NET Core 2 - GetUserIdAsync 返回带有 Guid ID 的空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48722020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com