我得到
InvalidOperationException: No service for type"Microsoft.AspNetCore.Identity.SignInManager1 (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>
如果你能帮助我,我将非常高兴。
面对相同的问题后,我的身份类移动到Guid,并找到解决方案在这里:
您可能需要更改您的登录部分视图来使用新的用户类型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的,但注入依赖项不可用的需求是一样的。)
这个问题来自于你的应用程序中的一些类在它的构造函数中需要一个SignInManager,但是在依赖注入设置中没有与它相关的实现。
要修复,在你的Startup类中,在ConfigureServices方法中,在服务中注册SignInManager类。例如:services.AddScoped<SignInManager<ApplicationUser>, SignInManager<ApplicationUser>>();
AddIdentity扩展方法可能已经更新了,因为最初的问题被要求添加它,但是对于IoC容器不能解决的任何问题,相同的错误类型将显示。
我就是这么做的。当我创建项目时,我添加了身份,这使得框架可以将UserManager<IdentityUser>
和SignInManager<IdentityUser>
注入我的_loginPartial视图。我所做的是将Type<TUser>
从<IdentityUser>
更改为<ApplicationUser>
(ApplicationUser是我想在从IdentityUser类继承的项目中使用的身份类),一切都很好。