在服务结构项目上运行IdentityServer4的迁移

时间:2018-02-23 00:59:41

标签: azure-service-fabric identityserver4 service-fabric-stateless

我已将IdentityServer4设置在服务结构项目中,一切正常,直到我决定停止在内存中加载配置并使用他们拥有的ConfigurationDb和PersistedGrantDb。我在“找不到PersistedGrantDbContext”的cmd上得到错误;如果我改变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;
        //});

如果您需要更多上下文或代码来解决这个问题,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

根据问题的评论,我认为数据库没有设置。

您需要针对正确的上下文运行update database命令,以确保它被创建并填充。

<强>的dotnet-CLI

dotnet ef database update -c PersistedGrantDbContext
dotnet ef database update -c ConfigurationDbContext

程序包管理器控制台

Update-Database -Context PersistedGrantDbContext
Update-Database -Context ConfigurationDbContext

如果上下文不在数据库中,则会创建它们并使用创建数据为它们播种。