ASP.net身份:如何获取当前的IdentityUser(ApplicationUser)? UserManager.FindById在哪里?

我从VS2013中的ASP.net默认模板开始。 我想获取当前的用户对象。 这可以在不直接访问数据库的情况下实现。

在文档中,这看起来非常简单: 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 { public UserManager() : base(new UserStore(new ApplicationDbContext())) { } public async System.Threading.Tasks.Task 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的方法?

添加

在用户管理器中, FindById ,但找到this.FindById 。 我将添加截图。 这不是一个正确的解决方案,因为我不明白,为什么会发生这种情况,或者有人可以解释这种行为? 我附上两个智能感知屏幕。 我还想提一下,这不是intellisense的问题 – 如果我不添加this. ,代码就不会编译this.

智能感知输入“Fi”:

Intellisense打开Fi

智能感知进入“this.Fi”:

Intellisense打开了这个.Fi

这样,至少我不再被困了。

FindById是一个来自Microsoft.AspNet.Identity.UserManagerExtensions类的扩展方法。 它是Microsoft.AspNet.Identity.Core nuget包的一部分。

你应该添加

 using Microsoft.AspNet.Identity; 

您的代码开始使用非异步方法。