sto cercando di utilizzare UserManager in una classe, ma sto ottenendo questo errore:Come si inseriscono le classi di identità con Ninject?
Error activating IUserStore{ApplicationUser}
No matching bindings are available, and the type is not self-bindable.
sto usando il default Startup.cs, che imposta una singola istanza per richiesta:
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
sono in grado di ottenere l'istanza ApplicationDbContext, che credo sia sempre iniettato da Owin (è vero?):
public class GenericRepository<T> : IGenericRepository<T> where T : class
{
private ApplicationDbContext context;
public GenericRepository(ApplicationDbContext context)
{
this.context = context;
}
}
ma non posso fare lo stesso con UserManage r (Esso genera l'errore indicato in precedenza):
public class AnunciosService : IAnunciosService
{
private IGenericRepository<Anuncio> _repo;
private ApplicationUserManager _userManager;
public AnunciosService(IRepositorioGenerico<Anuncio> repo, ApplicationUserManager userManager)
{
_repo = repo;
_userManager = userManager;
}
}
Il controller utilizza l'UserManager in questo modo:
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
sto usando Ninject per iniettare le mie altre classi, ma come faccio a iniettare l'UserManager con le sue dipendenze ed evita di usarlo così nei miei controller?
bella soluzione. Funziona anche dalla mia parte. Grazie. –
Molto utile, grazie. Dovresti andare avanti e accettare questa come risposta anche se hai risposto alla tua stessa domanda. –
Ti capita di avere un esempio di codice funzionante? Ho lottato con questo per un paio di settimane e non riesco a capirlo. – Bojan