web-dev-qa-db-fra.com

Aucun service pour le type 'Microsoft.AspNetCore.Identity.SignInManager Lorsque

Je reçois

InvalidOperationException: aucun service pour le type "Microsoft.AspNetCore.Identity.SignInManager 1 [Authorization.IdentityModels.ApplicationUser]" n'a été enregistré.

lorsque je lance mon site Web ApsCore MVC.

ce sont des segments de mon code:

ConfigureServices:

services.AddDbContext<ApplicationDbContext>(options =>
                        options.UseNpgsql(configuration["Data:DefaultConnection:ConnectionString"]));



services.AddIdentity<ApplicationUser, IdentityRole<Guid>>()
                    .AddEntityFrameworkStores<ApplicationDbContext, Guid>()
                    .AddDefaultTokenProviders();

Configurer:

app.UseIdentity();

ApplicationDbContext.cs

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<Guid>, Guid> 

ApplicationUser.cs

 public class ApplicationUser : IdentityUser<Guid>

Je serai très heureux si vous pouvez m'aider.

17
Dani

Face au même problème après avoir déplacé mes classes d'identité vers Guid et trouvé une solution ici :

Vous devrez probablement modifier votre vue partielle de connexion pour utiliser le nouveau type d'utilisateur IdentityUser

Dans Views/Shared/_LoginPartial.cshtml, je viens de changer

@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

À

@using Microsoft.AspNetCore.Identity
@inject SignInManager<MyUser> SignInManager
@inject UserManager<MyUser> UserManager

et cela a fonctionné pour moi.

27
Nazim Turakulov

Je ne sais pas si vous voyez toujours ce problème, mais voici de l'aide pour toute autre personne qui tombe dessus. (Notez que les détails sont pour la version 1, mais la nécessité d'une dépendance injectée non disponible est la même.)

Le problème provient d'une classe de votre application nécessitant un SignInManager dans son constructeur, mais aucune implémentation ne lui est associée dans la configuration de l'injection de dépendance.

Pour corriger, dans votre classe de démarrage, dans la méthode ConfigureServices, enregistrez la classe SignInManager dans les services. Par exemple: services.AddScoped<SignInManager<ApplicationUser>, SignInManager<ApplicationUser>>();

La méthode d'extension AddIdentity peut avoir été mise à jour depuis la question d'origine pour l'ajouter, mais le même type d'erreur apparaîtra pour tout ce que le conteneur IoC ne peut pas résoudre.

15
MadCityDev