asp.net identité 2.0 unité non-résolution par défaut de l'utilisateur de stocker
- je obtenir de l'exception suivante lorsque vous essayez de configurer l'Unité à l'aide de l'Unité.Mvc5 avec un MVC 5 application à l'aide d'Identité 2.0 et de l'Identité 2.0 Échantillons standard. j'ai lu ce DONC Configurer l'Unité pour DI ASP.NET Identité et je ne suis toujours pas clair sur ce que je suis absent. Ce que je fais mal?
Le type de courant, Système.Les données.Commun.DbConnection, est une classe abstraite et ne peut pas être construit. Êtes-vous manque un type de la cartographie?
[ResolutionFailedException: la Résolution de la dépendance à l'échec, type = "myApp.Web.Les contrôleurs.AccountController", nom = "(aucun)".
Exception s'est produite lors: lors de la résolution d'.
Exception est la suivante: InvalidOperationException - Le type de courant, Système.Les données.Commun.DbConnection, est une classe abstraite et ne peut pas être construit. Êtes-vous manque un type de la cartographie?
Au moment de l'exception, le conteneur a été:
Résoudre myApp.Web.Les contrôleurs.AccountController,(aucune)
Régler le paramètre "userManager" du constructeur myApp.Web.Les contrôleurs.AccountController(myApp.Web.Modèles.ApplicationUserManager userManager)
La résolution de myApp.Web.Modèles.ApplicationUserManager,(aucune)
Régler le paramètre "magasin" du constructeur myApp.Web.Models.ApplicationUserManager(Microsoft.AspNet.Identity.IUserStore1[[myApp.Web.DAL.Profiles.ApplicationUser, myApp.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] store)
1[myApp.Web.DAL.Profiles.ApplicationUser],(none) (mappé à partir de Microsoft.AspNet.L'identité.IUserStore
Resolving Microsoft.AspNet.Identity.EntityFramework.UserStore1[myApp.Web.DAL.Profiles.ApplicationUser], (none))
1[[myApp.Web.DAL.Les profils.ApplicationUser, myApp.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]](le Système.Les données.De l'entité.DbContext contexte)
Resolving parameter "context" of constructor Microsoft.AspNet.Identity.EntityFramework.UserStore
La Résolution Du Système.Les données.De l'entité.DbContext,(aucune)
Régler le paramètre "existingConnection" du constructeur du Système.Les données.De l'entité.DbContext(Système D'.Les données.Commun.DbConnection existingConnection, Système.Les données.De l'entité.L'Infrastructure.DbCompiledModel modèle, Système d'.Boolean contextOwnsConnection)
La Résolution Du Système.Les données.Commun.DbConnection,(aucun)
compte contrôleur que j'ai modifié, il
public AccountController(ApplicationUserManager userManager)
{
_userManager = userManager;
}
private ApplicationUserManager _userManager;
conteneurs j'ai enregistré
container.RegisterType<ApplicationUserManager>(new HierarchicalLifetimeManager());
container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new HierarchicalLifetimeManager());
OriginalL'auteur Michael | 2014-04-22
Vous devez vous connecter pour publier un commentaire.
Je vois vous avez trouvé une solution, mais je pense que j'ai un plus simple.
Vous êtes en utilisant Entity Framework, droit? Ainsi, votre application presque certainement a quelque chose de l'héritage de
DbContext
(probablement héritant deIdentityContext<TUser>
, qui hérite deDbContext
dans ce cas). Dans le modèle par défaut c'est ApplicationDbContext.Dans votre composition de la racine, vous pouvez juste ajouter
container.RegisterType<DbContext, ApplicationDbContext>(new HierarchicalLifetimeManager());
(évidemment modifier ce si le vôtre n'est pas appelé ApplicationDbContext).Exact, oui. Je suis sûr que, par le message, qu'il ne parvient pas à résoudre DbContext, les classes comme le UserManager voulez une copie. Vous pouvez également utiliser un InjectionFactory si vous le souhaitez.
enfin eu le temps d'essayer cela. semble être au travail. merci.
n'est-il pas préférable d'utiliser PerRequestLifetimeManager au lieu de HierarchicalLifetimeManager ?
Oui, sans doute, si vous l'avez installé dans votre projet. J'ai été coller avec ce qui était dans l'échantillon. Il est également possible de faire quelque chose de similaire avec les HLM et les conteneurs enfants, je crois.
OriginalL'auteur Casey
ok j'ai tout compris. je pense que.
j'ai créé mon propre userstore classe et branché.
cela a été utile un peu. http://odetocode.com/blogs/scott/archive/2014/01/20/implementing-asp-net-identity.aspx
l'unité config
le gestionnaire des utilisateurs
magasin d'utilisateur
OriginalL'auteur Michael