我已经将我的 IdentityServer4 设置在一个服务结构项目中,一切正常,直到我决定停止在内存中加载我的配置并使用它们拥有的 ConfigurationDb 和 PersistedGrantDb。我在 cmd 上收到“Cant find PersistedGrantDbContext”错误;如果我将 program.cs 更改为使用 webhost 代码运行,我能够得到它并创建迁移。我在这里缺少什么吗?可以以不同的方式完成吗?这是我的身份服务器启动代码,请记住,我现在有与在评论中加载上下文相关的代码。
const string connectionString = @"Data Source=.;Initial Catalog=DbIdentity;MultipleActiveResultSets=true; User ID=admin; Password=123";
var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;
services.AddIdentityServer(options =>
{
options.Events.RaiseErrorEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseSuccessEvents = true;
})
.AddInMemoryClients(IdentityServerConfiguration.GetClients(clientSettings))
.AddInMemoryApiResources(IdentityServerConfiguration.GetApiResources(clientSettings))
.AddInMemoryIdentityResources(IdentityServerConfiguration.GetIdentityResources())
// .AddDeveloperSigningCredential();
.AddSigningCredential(cert);
//.AddConfigurationStore(options =>
//{
// options.ConfigureDbContext = builder =>
// builder.UseSqlServer(connectionString,
// sql => sql.MigrationsAssembly(migrationsAssembly));
//})
//.AddOperationalStore(options =>
//{
// options.ConfigureDbContext = builder =>
// builder.UseSqlServer(connectionString,
// sql => sql.MigrationsAssembly(migrationsAssembly));
// options.EnableTokenCleanup = true;
// options.TokenCleanupInterval = 30;
//});
如果您需要更多上下文或代码来解决这个问题,请告诉我。谢谢!