Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IdentityServer4升级到.NET Core 2.0时出现问题(AddConfigurationStore、AddOperationalStore)_C#_Asp.net Mvc_Postgresql_Asp.net 2.0_Identityserver4 - Fatal编程技术网

C# IdentityServer4升级到.NET Core 2.0时出现问题(AddConfigurationStore、AddOperationalStore)

C# IdentityServer4升级到.NET Core 2.0时出现问题(AddConfigurationStore、AddOperationalStore),c#,asp.net-mvc,postgresql,asp.net-2.0,identityserver4,C#,Asp.net Mvc,Postgresql,Asp.net 2.0,Identityserver4,我从.NET Core 1.1升级到.NET Core 2.0,并遇到以下问题(我还升级了一些库以支持.NET Core 2.0) CS1929“ConfigurationStoreOptions”不包含“UseNpgsql”的定义,最佳扩展方法重载“NPGSQLDBContextOptions Extensions.UseNpgsql(DBContextOptions Builder,string,Action)”需要“DBContextOptions Builder”类型的接收器 Start

我从.NET Core 1.1升级到.NET Core 2.0,并遇到以下问题(我还升级了一些库以支持.NET Core 2.0)

CS1929“ConfigurationStoreOptions”不包含“UseNpgsql”的定义,最佳扩展方法重载“NPGSQLDBContextOptions Extensions.UseNpgsql(DBContextOptions Builder,string,Action)”需要“DBContextOptions Builder”类型的接收器

Startup.cs

        services.AddIdentityServer()
            .AddSigningCredential(Certificate.Get())
            .AddAspNetIdentity<User>()
            .AddConfigurationStore(builder =>
                builder.UseNpgsql(connectionString, options =>
                    options.MigrationsAssembly(migrationsAssembly)))
            .AddOperationalStore(builder =>
                builder.UseNpgsql(connectionString, options =>
                    options.MigrationsAssembly(migrationsAssembly)));


注意:我添加了“使用Microsoft.EntityFrameworkCore;”

我自己也遇到了同样的问题。对IdentityServer4.EntityFramework github的拖网调查揭示了一个使用ConfigureDBContext属性的示例:

解决方案:

        services.AddIdentityServer()
            .AddSigningCredential(Certificate.Get())
            .AddAspNetIdentity<User>()
            .AddConfigurationStore(options =>
            {
                options.ConfigureDbContext = builder =>
                    builder.UseNpgsql(connectionString,
                        sql => sql.MigrationsAssembly(migrationsAssembly));
            })
            // this adds the operational data from DB (codes, tokens, consents)
            .AddOperationalStore(options =>
            {
                options.ConfigureDbContext = builder =>
                    builder.UseNpgsql(connectionString,
                        sql => sql.MigrationsAssembly(migrationsAssembly));

                // this enables automatic token cleanup. this is optional.
                options.EnableTokenCleanup = true;
                options.TokenCleanupInterval = 30;
            });
services.AddIdentityServer()
.AddSigningCredential(证书.Get())
.AddAsNetIdentity()
.AddConfigurationStore(选项=>
{
options.ConfigureDbContext=builder=>
builder.UseNpgsql(连接字符串,
sql=>sql.migrationassembly(migrationassembly));
})
//这将添加来自DB的操作数据(代码、令牌、同意)
.addStore(选项=>
{
options.ConfigureDbContext=builder=>
builder.UseNpgsql(连接字符串,
sql=>sql.migrationassembly(migrationassembly));
//这将启用自动令牌清理。这是可选的。
options.EnableTokenCleanup=true;
options.TokenCleanupInterval=30;
});

2.0.0 RC1刚刚发布,用于针对NetStandard2.0的nuget
        services.AddIdentityServer()
            .AddSigningCredential(Certificate.Get())
            .AddAspNetIdentity<User>()
            .AddConfigurationStore(options =>
            {
                options.ConfigureDbContext = builder =>
                    builder.UseNpgsql(connectionString,
                        sql => sql.MigrationsAssembly(migrationsAssembly));
            })
            // this adds the operational data from DB (codes, tokens, consents)
            .AddOperationalStore(options =>
            {
                options.ConfigureDbContext = builder =>
                    builder.UseNpgsql(connectionString,
                        sql => sql.MigrationsAssembly(migrationsAssembly));

                // this enables automatic token cleanup. this is optional.
                options.EnableTokenCleanup = true;
                options.TokenCleanupInterval = 30;
            });