ASP.NET Identité fondamentale de ne pas injecter UserManager<ApplicationUser>
J'ai un vieux asp.net de base de l'identité de la base de données, et je veux faire la carte d'un nouveau projet (une api web).
Juste pour le test, j'ai copié le dossier de Modèles, et la ApplicationUser fichier du projet précédent (ApplicationUser simplement hérite de IdentityUser, aucun changement que ce soit) - faire DB première semble être une mauvaise idée.
Je suis l'enregistrement de l'Identité dans ConfigureServices (mais je ne suis pas de l'ajouter à la pipeline depuis ma seule intention est d'utiliser les UserStore)
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
Mon espoir est que maintenant
UserManager<ApplicationUser>
...devrait être automatiquement injecté dans les constructeurs.
Toutefois, lorsque vous ajoutez le code suivant à un contrôleur
privé UserManager _userManager;
public UserController(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
... à tous les appels à l'api se termine avec une exception:
HttpRequestException: code d'état de Réponse n'indique pas le succès: 500 (Erreur Interne du Serveur).
Retrait de la "injection de code en cours d'exécution en douceur web api qui peut accepter des demandes.
Il est difficile de déboguer comme cela se produit avant que tout mon code est atteint. Aucune idée de pourquoi cela se produit?
P. S. Après l'activation de toutes les exceptions à l'Exception des Paramètres de la fenêtre j'ai eu celui-là:
Exception levée: 'Système.InvalidOperationException " dans
Microsoft.Extensions.DependencyInjection.dllInformations supplémentaires: Impossible de résoudre un service de type
'Espace de noms.Les données.ApplicationDbContext' tout en tentant d'activer
"Microsoft.AspNetCore.L'identité.EntityFrameworkCore.UserStore`4[De L'Espace De Noms.Modèles.
ApplicationUser,Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole,Namespace.Data.ApplicationDbContext,System.String]'.
OriginalL'auteur nikovn | 2017-01-16
Vous devez vous connecter pour publier un commentaire.
Avez-vous le
app.UseIdentity();
appel dans leConfigure
méthode:MODIFIER
Avez-vous aussi cette ligne avant la
services.AddIdentity<ApplicationUser, IdentityRole>()
ligne?Cela devrait fonctionner. Veuillez aussi vérifier si
ApplicationDbContext
hérite deIdentityDbContext
.Votre montage fixe, et maintenant, je suis embarrassé. Je vais cacher mon visage pour le reste de la journée...
Mihail mentionne l'ajout d'application.UseIdentity(). Cela a été déprécié en CORE 2.0. La méthode est maintenant app.UseAuthentication(). Espérons que cette aide.
UseAuthentication()
ne semble pas enregistrer ces gestionnaires.OriginalL'auteur Mihail Stancescu
DI conteneur est incapable de résoudre une dépendance. L'ajouter à la collection de services
Vous devez également vous familiariser avec les la documentation officielle
Ok compris. Pouvez-vous ajouter un un Minimum, Complètes et Vérifiables exemple le problème, de sorte que nous pouvons reproduire votre problème et être en mesure de fournir de meilleures réponses
OriginalL'auteur Nkosi
OriginalL'auteur Lakmal