没有服务类型' Microsoft.AspNetCore.Identity.SignInManager何时

时间:2016-08-25 13:00:06

标签: asp.net-core asp.net-identity identity .net-core

我正在

  

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>

如果你能帮助我,我将非常高兴。

3 个答案:

答案 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 类继承的项目中使用的身份类)并且一切正常。