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

Til*_*ito 6 c# asp.net webforms asp.net-identity

我从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()); 
Run Code Online (Sandbox Code Playgroud)

但是缺少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;
    }
}
Run Code Online (Sandbox Code Playgroud)

调用的属性:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!要么向我展示FindById已经消失或如何使我的代码工作.或者是否有另一种加载IdentityUser的方法?

添加

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

智能感知输入"Fi":

Intellisense打开Fi.

Intellisense进入"this.Fi":

Intellisense打开了这个.Fi

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

tra*_*max 14

FindById是一种来自Microsoft.AspNet.Identity.UserManagerExtensions课堂的扩展方法.它是Microsoft.AspNet.Identity.Corenuget包的一部分.

你应该添加

using Microsoft.AspNet.Identity;
Run Code Online (Sandbox Code Playgroud)

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

  • 此外,使用Visual Studio 2013 Update 3及更高版本,只需使用个人帐户创建一个新的MVC项目,您就可以看到FindById的大量用途 (2认同)