在我的 .Net Core Web 应用程序中,我使用了脚手架功能和一些在线示例来创建一些帐户页面和管理页面。我能够成功注册,并且可以在 AspNetUsers 表中看到帐户信息。该示例中的大多数其他页面都运行一个获取当前用户的命令,它位于辅助方法中。
return _userManager.GetUserAsync(HttpContext.User);
那一行返回一个应用程序用户,这就是我想要的。但是,我不断收到此错误:“Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxx)”我假设它在谈论 ID,我检查了表格,ID 确实是Guid,现在有一个。我将同一行放在 try/catch 中,正是该行的执行导致了错误。有什么想法吗?
编辑:我的问题实际上与下面链接的 LarsTech 问题更相关。我对那个答案使用了一个轻微的修改,我将在下面回答。
感谢 LarsTech 分享了一个非常相似的问题的链接。该链接是:ASP.NET Core Identity - 获取当前用户
但我稍微调整了一下答案,它对我有用。
所以,而不是使用这个:
return _userManager.GetUserAsync(HttpContext.User);
我改用这个:
ClaimsPrincipal currentUser = this.User;
ApplicationUser user = await _userManager.FindByNameAsync(currentUser.Identity.Name);
return user;