2

デフォルトの MVC6 テンプレートを使用して、Asp.Net Identity 2 の「カスタム ストレージ プロバイダー」を Visual Studio 2015 の Identity 3 beta 4 で動作するようにアップグレードしようとしています。

Asp.Net Identity 3 カスタム ストレージ プロバイダーを ASP5 ミドルウェアに登録する方法がわかりません。

現時点では、次のことを行っていますが、それが正しいかどうかはわかりません。

services.AddIdentity()
 .AddRoleStore>()
 .AddUserStore>()

 .AddDefaultTokenProviders();

データベース コンテキストも登録する方法がわかりません。

私のプロジェクトではMySQLDatabase.csと呼ばれています

ドキュメントが見つかりません。

Identity.EntityFramework ミドルウェアの登録は、カスタム ストレージ プロバイダーとは異なる方法で行われるようです。

デフォルトの MVC6 テンプレートを実行して「登録」ボタンをクリックすると、次のエラーが表示されます。

「InvalidOperationException: 'Bondii.Identity.MySQL.UserStore`1[Bondii.Identity.MySQL.IdentityUser]' をアクティブ化しようとしているときに、タイプ 'Bondii.Identity.MySQL.MySQLDatabase' のサービスを解決できません。」

完全なプロジェクトを含むマイ コード:

私のコードを見るための GitHub リポジトリは次のとおりです: https://github.com/simonpbond/bondii.identity.mysql

Identity 2 に基づく元の「カスタム ストレージ プロバイダー チュートリアル - Identity 3 にアップグレードしようとしています: http://www.asp.net/identity/overview/extensibility/implementing-a-custom-mysql-aspnet-identity-storage -プロバイダー

元のサンプル コード: https://aspnet.codeplex.com/SourceControl/latest#Samples/Identity/AspNet.Identity.MySQL/

4

1 に答える 1

0

startup.css には、次のようなものが必要です。

 services.AddTransient(_ => new MySQLDatabase());

前:

 services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddRoleStore<MySQL.RoleStore<IdentityRole>>()
            .AddUserStore<MySQL.UserStore<IdentityUser>>()

            .AddDefaultTokenProviders();

これにより、リクエストごとにデータベース接続が提供され、DIによってストアのコンストラクターに渡されます。

これは最善の方法ではないかもしれません。ある種のファクトリをシングルトンとして渡す方が良いかもしれませんが、これはセットアップした方法で機能するはずです。

于 2015-06-24T10:09:30.900 に答える