我一直在尝试使用 ASP.NET Core Identity 来检查我的数据库中的现有用户,当我调用 FindByEmailAsync 或 UserManager 类上的其他 Find 方法时,即使 AspNetUsers 数据库表为空,它也会找到具有 Id 的实体我已经仔细检查了我的 Startup.cs 文件,因为我几乎可以肯定它一定是 DI 的东西。但是我在我的服务类中使用了这个 EntityManager,并且这个类被注册为 Scoped。不管我输入什么参数,总是返回一些实体:我的启动 DI 配置:我的用户(来自 IdentityUser):我的服务注册(我通过 DI 使用 UserManager):我希望这些方法不会找到任何用户实体,但由于某种原因它总是返回非空值。可能是身份缓存或 DI 问题?
1 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
FindByEmailAsync
方法返回一个Task
,而不是一个用户。如果您检查userExists
变量的类型,您将看到它的类型Task<>
。因此,该方法不会返回 ID 为 70 的用户,而是返回 ID 为 70 的用户Task
。如果修改此行:
var userExists = _userManager.FindByEmailAsync("rasfafasf");
通过添加await
:
var userExists = await _userManager.FindByEmailAsync("rasfafasf");
您将获得任务的实际结果,即拥有该电子邮件的用户(null
在您的情况下)。
- 1 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消