asp.net-core-identity - FindByNameAsync 抛出空异常
问题描述
目前,我的 asp.net 核心应用程序通过 userEmail 验证用户,现在需要更改以通过 userName 验证它。我已将方法从 FindByEmailAsync 更改为 FindByNameAsync。如果我输入电子邮件地址,但如果我使用用户名,它就不起作用。它为 response.Result.UserName 抛出一个空异常有人可以告诉我问题可能是什么
public async Task<SignInResult> PasswordSignInAsync(string user, string password, bool isPersistent, bool lockoutOnFailure)
{
var userName = GetUserName(user);
return await _signInManager.PasswordSignInAsync(userName, password, isPersistent, lockoutOnFailure);
}
private string GetUserName(string userName)
{
//if (!userNameOrEmail.Contains("@"))
// return userNameOrEmail;
var response = _userManager.FindByNameAsync(userName);
return response.Result != null ? response.Result.UserName : string.Empty;
}
解决方案
您应该等待异步调用以获取结果:
var response = await _userManager.FindByNameAsync(userName);
您还需要用 GetUserName 装饰函数async
推荐阅读
- ios - Cocoapods 安装 libopencv-contrib 时出错
- java - 在 Janino 中从字符串编译 Lambda 表达式
- javascript - 错误:找不到模块“vue-loader-v16/package.json”
- github - 无法在 github 上获取补丁(openembedded 存储库:necessary-to-check-libpcap.patch)
- linux - “-bash:是一个目录”这是一个错误吗?
- javascript - JQuery UI自动完成 - 没有匹配时隐藏结果列表
- javascript - 获取所有在javascript中总和为0的子数组?
- python - 在使用 class() 方法时从函数中的另一个函数访问变量
- java - 霍夫曼加密中的 Java 到 C# 代码翻译错误
- testing - 测试角度材料下拉 e2e 时出现 ScriptTimeoutError