我正在将drom迁移到Duende,并使用.net 6核心项目,在builder.build()上启动时会出现以下错误。
'Duende.IdentityServer.Validation.AuthorizeRequestValidator‘:在尝试激活InvalidOperationException时,无法解析“Duende.IdentityServer.Stores.IClientStore”类型的服务
这是我的启动代码:
// add configuration mappings
builder.Services.AddOptions();
builder.Services.Configure<MaximizerConfiguration>(builder.Configuration.GetSection(MaximizerConfiguration.CONFIG_SECTION));
builder.Services.Configure<MessageEmailConfiguration>(builder.Configuration.GetSection(MessageEmailConfiguration.CONFIG_SECTION));
builder.Services.Configure<SitefinityLinksConfiguration>(builder.Configuration.GetSection(SitefinityLinksConfiguration.CONFIG_SECTION));
builder.Services.Configure<OIDCClientsConfiguration>(builder.Configuration.GetSection(OIDCClientsConfiguration.CONFIG_SECTION));
// database context with asp.net identity
builder.Services.AddDbContext<IdentityContext>(options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString(IdentityContext.CONNECTION_NAME));
});
builder.Services.AddIdentity<User, IdentityRole>(options =>
{
options.SignIn.RequireConfirmedEmail = true;
options.Lockout.MaxFailedAccessAttempts = 10;
options.Lockout.DefaultLockoutTimeSpan = new TimeSpan(0, 15, 0);
options.Password.RequireDigit = true;
options.Password.RequiredLength = 8;
options.Password.RequireLowercase = true;
options.Password.RequireUppercase = true;
options.Password.RequireNonAlphanumeric = false;
})
.AddEntityFrameworkStores<IdentityContext>()
.AddUserManager<UserManager>()
.AddDefaultTokenProviders();
builder.Services.AddMvc();
builder.Services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddAspNetIdentity<User>()
.AddProfileService<ProfileManager>();
var tokenExp = double.Parse(builder.Configuration["TokenExpirationInHours"]);
builder.Services.Configure<DataProtectionTokenProviderOptions>(o => o.TokenLifespan = TimeSpan.FromHours(tokenExp));
// custom services
builder.Services.AddTransient<MessageContext>();
builder.Services.AddTransient<MaximizerContext>();
builder.Services.AddTransient<ProfileManager>();
builder.Services.AddTransient<EmailManager>();
builder.Services.AddSingleton<IConfiguration>(builder.Configuration);
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();```发布于 2022-04-06 01:58:56
我解决了问题。IClientStore是必需的,所以为了解决这个问题,我只是在启动中添加了这些行。
.AddInMemoryIdentityResources(IdentityConfiguration.GetIdentityResources()) .AddInMemoryClients(IdentityConfiguration.GetClients(builder.Configuration))
https://stackoverflow.com/questions/71744940
复制相似问题