尝试激活“ WebShop.Controllers.User.UserController”时,无法解析类型为“ Microsoft.AspNetCore.Identity.UserManager”的服务

时间:2019-11-15 19:26:16

标签: c# entity-framework asp.net-core .net-core entity-framework-core

我是实体框架的新成员。 我在Web应用程序上工作时,我想对Angular网站进行用户身份验证。 用户登录工作正常。当我尝试添加用户角色时,出现以下错误消息:

然后出现以下错误: error

我将JWT令牌用作身份验证器。 还有Microsoft.IdentityModel。

我的代码: 启动文件 身份服务:

            services.AddIdentity<IdentityUser, IdentityRole>()
            .AddEntityFrameworkStores<WebShopContext>();

JWT自动服务:

 var key = Encoding.UTF8.GetBytes(Configuration["ApplicationSettings:JWT_Secret"]);

        services.AddAuthentication(x => 
        {
            x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(x=> {
            x.RequireHttpsMetadata = false;
            x.SaveToken = false;
            x.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(key),
                ValidateIssuer = false,
                ValidateAudience = false,
                ClockSkew = TimeSpan.Zero 
            };
        });
    }

我的ApplicationRole模型:

public class ApplicationRole : IdentityRole
    {
        public ApplicationRole() : base() { }
        public ApplicationRole(string name) : base(name) { }
        public string Description { get; set; }
    }
}

我的ApplicationUser模型:

    public class ApplicationUser : IdentityUser
{
    [Column(TypeName="nvarchar(150)")]
    public string FullName { get; set; }

    [Column(TypeName = "nvarchar(100)")]
    public string FirstName { get; set; }

    [Column(TypeName = "nvarchar(100)")]
    public string LastName { get; set; }

}

我绝对不知道。我怎么解决这个问题。请帮助我。

1 个答案:

答案 0 :(得分:1)

尝试更改

            services.AddIdentity<IdentityUser, IdentityRole>()
            .AddEntityFrameworkStores<WebShopContext>();

      services.AddIdentity<ApplicationUser, IdentityRole>() // <--- changed to ApplicationUser
      .AddEntityFrameworkStores<WebShopContext>();

从读取错误开始,我将假设您从IdentityUser继承的模型为ApplicationUser,而您正在设置服务以寻找IdentityUser而不是ApplicationUser就是您要的。