我在我的应用程序中创建了一个名为ProfileContoller
的控制器。
在此控制器中,我需要创建ApplicationUserManager
的实例,但我不知道如何创建它的新实例。我尝试过以下代码:
private ApplicationUserManager _userManager = Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
但是我收到了这个错误:
当前上下文中不存在名称
Current
我的第一个问题是我怎么能这样做?我将访问这行代码:
return View(await _userManager.FindByNameAsync(username));
我也使用UnityContainer
。我的第二个问题是:我是否还可以注册与界面ApplicationUserManager
或IUser
1 相关联的IUserStore
。
更新:
后来我发现有这样的事情:
private UserManager<ApplicationUser> _userManager = UserManager<ApplicationUserManager>();
它给我这个错误:
非可调用成员
UserManager<TUser>
不能像方法一样使用。
有了这个额外的&#34;用户经理&#34;,我无法看到我无法看到树木。所以,你再一次可以向我解释一下所有的用户经理&#34;是什么意思和它们用于什么?
<子> 注意:
1 我不知道这两者之间的区别所以如果你能解释这个问题吗?
答案 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错误。我只是错过了一个使用声明。