Идентификатор ASP.net: как получить текущий IdentityUser (ApplicationUser)? Где UserManager.FindById?

Я начал с шаблона по умолчанию для ASP.net в VS2013. Я хочу получить текущий пользовательский объект. Это должно быть возможно без прямого доступа к базе данных.

В документации это выглядит очень просто: http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx

Так что это должно быть

var currentUser = manager.FindById(User.Identity.GetUserId()); 

Но FindById отсутствует! Через несколько часов я пытаюсь использовать FindByIdAsync. Но я думаю, что у меня мертвый замок.

public class UserManager : UserManager<IdentityUser>
{
    public UserManager()
        : base(new UserStore<IdentityUser>(new ApplicationDbContext()))
    {
    }

    public async System.Threading.Tasks.Task<IdentityUser> GetCurrentUser()
    {
        var user = await FindByIdAsync(HttpContext.Current.User.Identity.Name);
        return user;
    }
}

Свойство вызова:

private IdentityUser_CurrentUser;
protected IdentityUser CurrentUser
{
    get
    {
        if (_CurrentUser == null)
        {                   
            var manager = new UserManager();
            var result = manager.GetCurrentUser();
            //-- STOPS HERE!!
            _CurrentUser = result.Result;
        }
        return _CurrentUser;
    }
}

Любая помощь будет оценена! Либо показать мне, где FindById ушел, или как заставить мой код работать. Или есть другой способ загрузить IdentityUser?

ADDED

В менеджере пользователя FindById не найден, но найдено this.FindById. Я добавлю скриншоты. Это не правильное решение, потому что я не понимаю, почему это происходит, или кто-нибудь может объяснить это поведение? Я прикрепляю 2 экрана с открытым intellisense. Я также хочу упомянуть, что это не проблема intellisense - код не компилируется, если я не добавляю this.

Intellisense входит в "Fi":

Intellisense open with Fi.

Intellisense входит в "this.Fi":

Intellisense open with this.Fi

Таким образом, по крайней мере, я больше не зацикливаюсь.

Ответ 1

FindById - это метод расширения, исходящий из класса Microsoft.AspNet.Identity.UserManagerExtensions. Он является частью пакета Microsoft.AspNet.Identity.Core nuget.

Вы должны добавить

using Microsoft.AspNet.Identity;

чтобы начать использовать неасинхронные методы.