Can't get UserManager from OwinContext in apicontroller
I really misunderstood your question earlier. You are just missing some using statements, I think.
The GetOwinContext().GetUserManager<ApplicationUserManager>()
is in Microsoft.AspNet.Identity.Owin
.
So try add this part:
using Microsoft.AspNet.Identity.Owin;
using Microsoft.AspNet.Identity; // Maybe this one too
var manager = HttpContext.Current.GetOwinContext().GetUserManager<UserManager<User>>();
This extension method may be a better solution if you want to unit test your controllers.
using System;
using System.Net.Http;
using System.Web;
using Microsoft.Owin;
public static IOwinContext GetOwinContext(this HttpRequestMessage request)
{
var context = request.Properties["MS_HttpContext"] as HttpContextWrapper;
if (context != null)
{
return HttpContextBaseExtensions.GetOwinContext(context.Request);
}
return null;
}
Usage:
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
This single line of code saved my day...
var manager =
new ApplicationUserManager(new UserStore<ApplicationUser>(new ApplicationDbContext()));
You can use it within a controller action to get an instance of UserManager.