Я хотел бы сохранить PersistedGrants в базе данных для масштабирования Azure.
Я предпочитаю читать IdentityResources/ApiResources/Clients(Config) из appsettings.json, а не из базы данных.
Из инструкции на сайте документации IdentityServer4 показан пример сохранения оба в базу.
Можно ли не загружать данные конфигурации в базу данных при сохранении грантов? Если да, то как?
Это работает:
services.AddIdentityServer((options) =>
{
options.UserInteraction = new UserInteractionOptions
{
LoginUrl = "/login",
LogoutUrl = "/api/Account/Logout",
ErrorUrl = "/error"
};
})
.AddSigningCredential(X509CertificateHelper.getCert(_env))
.AddOperationalStore(builder => builder.UseSqlServer(connectionString,
options => options.MigrationsAssembly(migrationsAssembly)))
.AddConfigurationStore(builder => builder.UseSqlServer(connectionString,
options => options.MigrationsAssembly(migrationsAssembly)))
.AddAspNetIdentity<ApplicationUser>();
Это не так. В частности, я не могу запустить dotnet ef database update -c PersistedGrantDbContext
.
services.AddIdentityServer((options) =>
{
options.UserInteraction = new UserInteractionOptions
{
LoginUrl = "/login",
LogoutUrl = "/api/Account/Logout",
ErrorUrl = "/error"
};
})
.AddSigningCredential(X509CertificateHelper.getCert(_env))
.AddOperationalStore(builder => builder.UseSqlServer(connectionString,
options => options.MigrationsAssembly(migrationsAssembly)))
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients(AppSettingsHelper.GetIdSrvrSettings()))
.AddAspNetIdentity<ApplicationUser>();
Для последнего я получаю следующую ошибку:
Произошла ошибка при вызове метода «ConfigureServices» в классе запуска «Startup». Рассмотрите возможность использования IDbContextFactory для переопределения инициализации DbContext во время разработки. Ошибка: невозможно выполнить привязку среды выполнения к нулевой ссылке.