HttpContext.GetOwinContext (). GetUserManager & lt; AppRoleManager & gt; () return null
J'ai utilisé ASP.NET Identité 2 pour la création de rôle, mais le résultat de HttpContext.GetOwinContext().GetUserManager<AppRoleManager>()
était nulle.
Alors je ne pouvais pas créer le rôle.
Comment puis-je résoudre ce problème?
public class MVCController : Controller
{
public MVCController()
{
}
public AppRoleManager RoleManager //returns null ?!
{
get
{
return HttpContext.GetOwinContext().GetUserManager<AppRoleManager>();
}
}
public User CurrentUser
{
get
{
string currentUserId = User.Identity.GetUserId();
User currentUser = DataContextFactory.GetDataContext().Users.FirstOrDefault(x => x.Id.ToString() == currentUserId);
return currentUser;
}
}
public IAuthenticationManager AuthManager
{
get
{
return HttpContext.GetOwinContext().Authentication;
}
}
public AppUserManager UserManager
{
get
{
return HttpContext.GetOwinContext().GetUserManager<AppUserManager>();
}
}
}
Mon Contrôleur:
public class RoleAdminController : MVCController
{
[HttpPost]
public async Task<ActionResult> CreateRole([Required]string name)
{
if (ModelState.IsValid)
{
if (RoleManager != null) //RoleManager is null, why?!
{
IdentityResult result = await RoleManager.CreateAsync(new Role { Name = name });
if (result.Succeeded)
{
return RedirectToAction("Index");
}
else
{
AddErrorsFromResult(result);
}
}
}
return View(name);
}
}
AppRoleManager:
public class AppRoleManager : RoleManager<Role, int>, IDisposable
{
public AppRoleManager(RoleStore<Role, int, UserRole> store)
: base(store)
{
}
public static AppRoleManager Create(IdentityFactoryOptions<AppRoleManager> options, IOwinContext context)
{
return new AppRoleManager(new RoleStore<Role, int, UserRole>(DataContextFactory.GetDataContext()));
}
}
source d'informationauteur Jahan
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement manqué de donner OwinContext la façon de créer de la ApplicationUserManager.
Pour cela, vous aurez besoin d'avoir ces derniers dans votre
public void Configuration(IAppBuilder app)
Cela va enregistrer les délégués qui créent
UserManager
etRoleManager
avecOwinContext
et seulement après que vous pouvez les appeler de retour dans vos contrôleurs.