MVC5-Konto-Controller-Nullreferenzausnahme

8

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

    
electrometro 03.01.2015, 01:43
quelle

1 Antwort

19

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.

    
Shoe 03.01.2015, 04:00
quelle

Tags und Links