In meinem Volk Controller habe ich die folgenden Zeilen:Httpcontext Null Wenn AddToRoleAsync
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(PersonViewModel pvm)
{
if (ModelState.IsValid)
{
var person = db.people.Where(x => x.PersonId == pvm.PersonId).FirstOrDefault();
var usr = new AccountController();
usr.UserManager.AddToRoleAsync(person.NetId, pvm.SetRole);
person.CurrentRole = pvm.SetRole;
db.SaveChanges();
}
return View(pvm);
}
Wenn die UserManager.AddToRoleAsync()
Methode ich hier ein NULL-Verweis Ausnahme erhalten im AccountController
:
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
Warum ist HttpContext null? Liegt es daran, dass ich eine neue AccountController
instanziiere? Wenn ja, wie sonst sollte ich bei UserManager
gehen, damit ich einen Benutzer zu einer Rolle hinzufügen kann? Wie fügt man einen Benutzer zu einer Rolle von einem anderen Controller hinzu? Scheint so, als wäre dies ein häufiges Problem, da Benutzerverwaltung eine Sache ist, die die Leute wollen.
Sie sollten auch prüfen, Erstellen einer Service-Schicht, in der Sie Ihre Aufrufe an die Datenbank tätigen und die benötigten Daten zurückgeben, anstatt diese Datenbankaufrufe in Ihren Aktionen auszuführen. Sie werden auch eine bessere Trennung der Konzessionen erhalten, wenn Sie Dependency Injection verwenden, um Ihre Dienste Ihren Controllern zur Verfügung zu stellen. –