Incapable de résoudre un service de type " Microsoft.AspNetCore.L'identité.UserManager "tout en tentant d'activer "l'action authcontroller'
J'obtiens cette erreur dans la Connexion du Contrôleur.
InvalidOperationException: Impossible de résoudre un service de type " Microsoft.AspNetCore.L'identité.UserManager`1[De L'Automobile.Modèles.Compte]', tout en tentant d'activer une Automobile.Serveur.Les contrôleurs.L'action authcontroller'.
voici Auth Contrôleur constructeur:
private SignInManager<Automobile.Models.Account> _signManager;
private UserManager<Automobile.Models.Account> _userManager;
public AuthController(UserManager<Models.Account> userManager,
SignInManager<Automobile.Models.Account> signManager)
{
this._userManager = userManager;
this._signManager = signManager;
}
et voici ConfigureServices en démarrage.cs:
public void ConfigureServices(IServiceCollection services)
{
//Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
services.Configure<AppConfig>(Configuration.GetSection("AppSettings"));
//var provider = HttpContext.ApplicationServices;
//var someService = provider.GetService(typeof(ISomeService));
services.AddDbContext<Providers.Database.EFProvider.DataContext>(options => options
.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
b => b.MigrationsAssembly("Automobile.Server")
));
services.AddIdentity<IdentityUser, IdentityRole>(options =>
{
options.User.RequireUniqueEmail = false;
})
.AddEntityFrameworkStores<Providers.Database.EFProvider.DataContext>()
.AddDefaultTokenProviders();
//services.AddScoped<SignInManager<Automobile.Models.Account>, SignInManager<Automobile.Models.Account>>();
//services.AddScoped<UserManager<Automobile.Models.Account>, UserManager<Automobile.Models.Account>>();
services.AddMvc();
App.Service = services.BuildServiceProvider();
//Adds a default in-memory implementation of IDistributedCache.
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
//Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.CookieHttpOnly = true;
});
}
Il me semble que vous vous inscrivez
Merci beaucoup 🙂 Résolu.
Comment avez-vous résolu.. ?
dans les services.AddIdentity il suffit de remplacer IdentityUser avec votre Identité de l'Utilisateur de la classe
pourquoi ne pas poster un commentaire en tant que réponse, cela m'a sauvé, mais après un peu de sérieux maux de tête du RnD..
IdentityUser
de base de l'utilisateur de la classe, mais alors vous êtes à l'aide de Automobile.Models.Account
, qui, bien sûr, n'est pas enregistré n'importe où par ASP.NET IdentitéMerci beaucoup 🙂 Résolu.
Comment avez-vous résolu.. ?
dans les services.AddIdentity il suffit de remplacer IdentityUser avec votre Identité de l'Utilisateur de la classe
pourquoi ne pas poster un commentaire en tant que réponse, cela m'a sauvé, mais après un peu de sérieux maux de tête du RnD..
OriginalL'auteur OMID | 2017-06-11
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le même modèle de données dans SignInManager, UserManager et des services.AddIdentity. Même principe est vrai si vous utilisez votre propre application personnalisée rôle de la classe du modèle.
Donc, changement
à
poster votre code s'il vous plaît.
En fait, j'ai résolu ce problème, mais maintenant face à un problème avec la création de la connexion DB. Je vais poster le problème.
stackoverflow.com/questions/48161467/...
semble que votre chaîne de connexion n'a pas été réglé correctement, découvrez ma réponse à votre post.
OriginalL'auteur HojjatK
Juste pour être clair au sujet de la réponse:
Si vous utilisez la classe
ApplicationUser
en démarrage.cs:services.AddIdentity<ApplicationUser, IdentityRole>()
ensuite, vous devez utiliser la même classe dans votre contrôleur lors de l'injection:
Si vous utilisez une autre classe, par exemple:
alors vous obtiendrez ce message d'erreur:
parce que vous avez utilisé
ApplicationUser
au démarrage, pasIdentityUser
si ce type n'est pas enregistré avec le système d'injection.OriginalL'auteur Greg Gum