Pessoal, estou iniciando um projeto em aps.net core, e estou tentando implementar o identity mas sem o entityframework, pois meu projeto será todo em nhibernate. Eu fiz o dev mas estou com um problema que não consigo resolver. Sempre que eu rodo meu projeto eu recebo a seguinte mensagem.
InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Identity.IUserStore`1[iFaiz.Web.Models.ApplicationUser]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager`1[iFaiz.Web.Models.ApplicationUser]'.
Pesquisando na internet tem muita informação sobre esse erro, e sempre mandam adicionar um comando no Startup que é esse abaixo:
services.AddIdentity<Models.ApplicationUser, NHibernate.AspNetCore.Identity.IdentityRole>().AddDefaultTokenProviders();
Mas mesmo inserindo ele, nada muda, o erro continua igual.
No meu Controller eu estou injetando a mesma classe.
public AccountController(
UserManager<Models.ApplicationUser> userManager
,SignInManager<Models.ApplicationUser> signInManager
,IEmailSender emailSender
,RoleManager<IdentityRole> roleManager
,ILogger<AccountController> logger
)
{
_userManager = userManager;
_signInManager = signInManager;
_emailSender = emailSender;
_roleManager = roleManager;
_logger = logger;
}
Meu Startup
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
var myEntities = new[] {
typeof(Models.ApplicationUser)
};
var configuration = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString(Configuration.GetConnectionString("ConexaoIFaiz")).ShowSql())
.ExposeConfiguration(cfg =>
{
cfg.AddDeserializedMapping(MappingHelper.GetIdentityMappings(myEntities), null);
});
var factory = configuration.BuildSessionFactory();
var session = factory.OpenSession();
var userManager = new UserManager<Models.ApplicationUser>(new UserStore<Models.ApplicationUser>(session),null, null, null,null, null,null,null,null);
services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options =>
{
options.LoginPath = new PathString("/Acesso/Login");
options.AccessDeniedPath = new PathString("/Acesso/AcessoNegado");
});
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddIdentity<Models.ApplicationUser, NHibernate.AspNetCore.Identity.IdentityRole>().AddDefaultTokenProviders();
}
Por favor poderia me ajustar a resolver esse erro?
Obrigado.