1

.NET CoreアプリケーションでJWTトークン認証にOpenIddictを使用しています。私はthis tutorial続いてきましたが、私は今、次のエラー受け付けております:OpenIddict用のDbContextを設定する

InvalidOperationException: No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider... 

マイConfigureServices方法Startup.cs中を:

 public void ConfigureServices(IServiceCollection services) 
    { 
     var builder = new ConfigurationBuilder() 
      .AddJsonFile("appsettings.json"); 
     Configuration = builder.Build(); 

     services.AddEntityFrameworkSqlServer() 
      .AddDbContext<MyDbContext>(options => 
       options.UseSqlServer(Configuration["Data:MyDbContext:ConnectionString"])); 

     services.AddIdentity<ApplicationUser, ApplicationRole>() 
      .AddEntityFrameworkStores<MyDbContext>() 
      .AddDefaultTokenProviders() 
      .AddOpenIddictCore<Application>(config => config.UseEntityFramework()); 

     services.AddMvc(); 

     // for seeding the database with the demo user details 
     //services.AddTransient<IDatabaseInitializer, DatabaseInitializer>(); 
     services.AddScoped<OpenIddictManager<ApplicationUser, Application>, CustomOpenIddictManager>(); 
    } 

わからない私はときDbContextを追加することはできませんと、このことについて何をすべきかAddIdentityを使用してください。

OpenIddictを追加する前にすべての接続文字列が問題なく機能していました。

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Verbose", 
     "System": "Information", 
     "Microsoft": "Information" 
    } 
    }, 
    "Data": { 
    "DefaultConnection": { 
     "ConnectionString": "my connection string" 
    }, 
    "SaleboatContext": { 
     "ConnectionString": "my connection string" 
    } 
    } 
} 

マイDbContext:

UPDATEここ は私appsettings.jsonファイルであるためEntityFrameworkコアRC2での設計変更に

public class ApplicationUser : IdentityUser { } 

public partial class MyDbContext : IdentityDbContext<ApplicationUser> 
{ 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
} 
+0

は、あなたのDBのコンテキストを共有していただけますか?私は、接続文字列が正しくEntityFrameworkに流れていることを確認したいと思います。 – Pinpoint

+0

私の接続文字列が私のdbcontextにない、それは私のappsettings.jsonにあります –

+0

あなたの接続文字列が設定されている場所は本当に重要ではありません。私はちょうどあなたのコンテキストが外部構成を可能にする正しいコンストラクタを持っていることを確認したい。 – Pinpoint

答えて

2

、あなたが今、手動DbContextOptionsを流す必要がありますか接続文字列をOnModelCreatingに直接設定します。あなたのDBのコンテキストにこのコンストラクタを追加

てみてください(つまり、OpenIddictContextから派生する必要があり):

public partial class MyDbContext : OpenIddictContext<ApplicationUser> { 
    public MyDbContext(DbContextOptions options) 
     : base(options) { 
    } 
} 
+0

友だちに感謝します。すぐにこれをチェックします –

+0

問題これは、ApplicationDbContextが定義されていないこと、これを実装する方法を知らないことです。 –

+0

コピー、貼り付けに間違いがあります。もちろん、コンストラクタであるため、コンテキストクラスとして指定する必要があります。そのために残念。 – Pinpoint