我正在
InvalidOperationException:没有类型的服务 ' Microsoft.AspNetCore.Identity.SignInManager 1 [Authorization.IdentityModels.ApplicationUser]'已经注册。
当我运行我的ApsCore MVC网站时。
这是我代码中的细分:
ConfigureServices:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(configuration["Data:DefaultConnection:ConnectionString"]));
services.AddIdentity<ApplicationUser, IdentityRole<Guid>>()
.AddEntityFrameworkStores<ApplicationDbContext, Guid>()
.AddDefaultTokenProviders();
配置:
app.UseIdentity();
ApplicationDbContext.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<Guid>, Guid>
ApplicationUser.cs
public class ApplicationUser : IdentityUser<Guid>
如果你能帮助我,我将非常高兴。
答案 0 :(得分:21)
将我的Identity类移至Guid并找到解决方案here后,遇到相同的问题:
您可能需要更改登录局部视图才能使用新的 用户类型IdentityUser
在Views / Shared / _LoginPartial.cshtml中,我刚刚进行了更改
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
收件人
@using Microsoft.AspNetCore.Identity
@inject SignInManager<MyUser> SignInManager
@inject UserManager<MyUser> UserManager
那对我有用。
答案 1 :(得分:14)
不确定您是否仍然看到这个问题,但是对于偶然发现这个问题的其他人来说,这里有一些帮助。 (请注意,具体版本适用于版本1,但是注入依赖项不可用的需求是相同的。)
问题来自您的应用程序中需要在其构造函数中使用SignInManager的某个类,但在依赖项注入设置中没有与之关联的实现。
要在Startup类中修复ConfigureServices方法,请在服务中注册SignInManager类。例如:
services.AddScoped<SignInManager<ApplicationUser>, SignInManager<ApplicationUser>>();
AddIdentity扩展方法可能已更新,因为原始问题被要求添加此方法,但是相同的错误类型将显示IoC容器无法解决的任何内容。
答案 2 :(得分:0)
这对我有用。我在创建项目时添加了身份,这使得框架可以将 UserManager<IdentityUser>
和 SignInManager<IdentityUser>
注入到我的 _loginPartial 视图中。我所做的是将 Type<TUser>
从 <IdentityUser>
更改为 <ApplicationUser>
(ApplicationUser 是我想在从 IdentityUser 类继承的项目中使用的身份类)并且一切正常。>