Ich versuche, Benutzerrollen in meine MVC-Webanwendung zu implementieren. Allerdings bekomme ich eine Null-Ausnahme in der Zeile return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
in meinem Account-Controller.
Konto-Controller
%Vor%ActionResult, das das Hinzufügen des Benutzers zur Rolle auslöst.
%Vor%Startup.Auth enthält
%Vor%Identitätskonfiguration
%Vor%Woher kommt die Nullreferenz? Im Code überprüfe ich, ob der Benutzer existiert.
Danke
Das sind zweifellos die verletzenden Linien ...
%Vor% Controller sollen nicht auf diese Weise instanziiert werden, da sie stark an die aktuelle HTTP-Anfrage gebunden sind (also HttpContext
).
Wenn HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
erreicht wird, ist HttpContext
null, weil kein Kontext vorhanden ist.
Sie können einfach dieselbe Eigenschaft in Ihren Controller einfügen, wo Sie versuchen, auf den UserManager zuzugreifen. Das funktioniert, weil der OwinContext in Ihrer gesamten Anwendung geteilt wird.
%Vor% Und wenn Sie wirklich schick werden wollen, deklarieren Sie BaseController
, das von Controller
erbt, setzen Sie die UserManager
-Eigenschaft hinein und lassen Sie alle anderen Controller von Ihrer Basis erben.
Tags und Links c# asp.net-mvc-5