我怎么能在ASP.net?

时间:2016-02-15 17:32:03

标签: c# asp.net entity-framework unity-container user-management

我在我的应用程序中创建了一个名为ProfileContoller的控制器。 在此控制器中,我需要创建ApplicationUserManager的实例,但我不知道如何创建它的新实例。我尝试过以下代码:

private ApplicationUserManager _userManager = Current.GetOwinContext().GetUserManager<ApplicationUserManager>();

但是我收到了这个错误:

  

当前上下文中不存在名称Current

我的第一个问题是我怎么能这样做?我将访问这行代码:

return View(await _userManager.FindByNameAsync(username));

我也使用UnityContainer。我的第二个问题是:我是否还可以注册与界面ApplicationUserManagerIUser 1 相关联的IUserStore

更新:

后来我发现有这样的事情:

private UserManager<ApplicationUser> _userManager = UserManager<ApplicationUserManager>();

它给我这个错误:

  

非可调用成员UserManager<TUser>不能像方法一样使用。

有了这个额外的&#34;用户经理&#34;,我无法看到我无法看到树木。所以,你再一次可以向我解释一下所有的用户经理&#34;是什么意思和它们用于什么?

<子> 注意:
1 我不知道这两者之间的区别所以如果你能解释这个问题吗?

3 个答案:

答案 0 :(得分:2)

这对我有用:

using System.Web;  //make sure you have this using

    private ApplicationUserManager _userManager;
    public ApplicationUserManager UserManager
    {
        get
        {
            if (_userManager == null && HttpContext == null)
            {
                return new ApplicationUserManager(new Microsoft.AspNet.Identity.EntityFramework.UserStore<ApplicationUser>(db));
            }
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }

答案 1 :(得分:0)

我没有在VS中看过这个,所以不是100%但是你得到的错误信息

  

当前上下文中不存在名称Current

可能只是因为当前是http上下文的一部分

尝试

public class ProfileController : Controller
{

    private ApplicationUserManager _userManager;

    public ProfileController()
    {
        _userManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
    }

因此,此处的更改是_userManager正在声明但未设置。 然后我们在类的构造函数中设置它。

答案 2 :(得分:0)

我发现Steve Greene建议的this question错误。我只是错过了一个使用声明。