【发布时间】:2022-01-21 09:28:51
【问题描述】:
当我添加行时 services.ConfigureIdentity();在我的 Asp.Net Core wen API 项目中,会触发以下错误:
启动应用程序时出错。
AggregateException:无法构造某些服务(验证服务描述符“ServiceType:Microsoft.AspNetCore.Identity.DataProtectorTokenProvider1[DCL.Models.WritableModels.User] Lifetime: Transient ImplementationType: Microsoft.AspNetCore.Identity.DataProtectorTokenProvider1[DCL.Models.WritableModels.User]”时出错:无法解析服务在尝试激活“Microsoft.AspNetCore.Identity.DataProtectorTokenProvider`1[DCL.Models.WritableModels.User]”时键入“Microsoft.AspNetCore.DataProtection.IDataProtectionProvider”。)
我的用户模型:
public class User : IdentityUser<int>
{
....
}
我的榜样:
public class Role : IdentityRole<int>
{
public Role() { }
public Role(string name) { Name = name; }
}
我的服务扩展:
public static class ServiceExtensions
{
#region Identity Configuration
public static void ConfigureIdentity(this IServiceCollection services)
{
var builder = services.AddIdentityCore<User>(q => { q.User.RequireUniqueEmail = false; });
builder = new IdentityBuilder(builder.UserType, typeof(Role), services);
builder.AddEntityFrameworkStores<DataAccessContext>().AddDefaultTokenProviders();
}
#endregion
}
我的 DataAccessContext:
public class DataAccessContext : IdentityDbContext<User, Role, int>
{
public DataAccessContext(DbContextOptions<DataAccessContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
#region Identity Models Configuration
builder.Entity<User>(entity => { entity.ToTable(name: "Users"); });
builder.Entity<Role>(entity => { entity.ToTable(name: "Roles"); });
builder.Entity<IdentityUserRole<int>>(entity => { entity.ToTable("UserRoles"); });
builder.Entity<IdentityUserClaim<int>>(entity => { entity.ToTable("Claims"); });
builder.Entity<IdentityUserLogin<int>>(entity => { entity.ToTable("Logins"); });
builder.Entity<IdentityRoleClaim<int>>(entity => { entity.ToTable("RoleClaims"); });
builder.Entity<IdentityUserToken<int>>(entity => { entity.ToTable("UserTokens"); });
#endregion
}
}
最后是我的启动:
public void ConfigureServices(IServiceCollection services)
{
services.ConfigureIdentity();
}
【问题讨论】:
标签: c# asp.net asp.net-core asp.net-web-api asp.net-identity