使用UserManager getUserasync方法返回Applicationuser中的当前记录



我正在尝试将当前登录的用户登录,并将其投入到正确的类中进行操作。

在我的控制器类中,我有以下代码:

private async void GetCurrentUser()
{
    _currentCursist = (Cursist) await _userManager.GetUserAsync(HttpContext.User);
}

我在我的索引方法中调用此方法:

public IActionResult Index()
{
    GetCurrentUser();
    if (_currentCursist == null)
    {
        return View("~/Views/Error/DefaultError.cshtml");
    }
    return View();
}

_currentCursist值将始终为null。我尝试了几种不同的方式,但它总是导致零值。为什么会发生?

httpContext.User值与当前用户填充,并且_userManager包含登录用户的。使用GetUserasync方法时,它并没有给我用户?

我找到了有关异步方法的更多信息。避免async void方法很重要。我将方法更改为以下:

private async Task GetCurrentUser()
{
   _currentCursist = (Cursist) await _userManager.GetUserAsync(HttpContext.User);
}

并使用以下方法调用:

GetCurrentUser().Wait();

我很确定我的价值是无效的,因为我没有等待响应。通过使用async task,我能够延迟执行,这导致了活动用户的返回。

相关内容

  • 没有找到相关文章

最新更新