首页 > 解决方案 > 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;
        }

标签: asp.net-core-identity

解决方案


您应该等待异步调用以获取结果:

var response = await _userManager.FindByNameAsync(userName);

您还需要用 GetUserName 装饰函数async


推荐阅读