0

関数を利用できるようにSqlMembershipProvider、という名前のを継承するコードを使用しています。MyMembershipClass

継承したクラスを作成し、Web.config次のようにファイルで指定しました。

<membership defaultProvider="MyMembershipClass">
  <providers>
    <clear/>
    <add name="MyMembershipClass" type="MyMembershipClass" applicationName="/"/> 
  </providers>
</membership>

これで、メンバーシップ関数を利用するために、コード内で次のように参照しますか?

MyMembershipClassまたは単にMembership

編集:

で参照するとMembership、これは原因defaultProvider="MyMembershipClass"ですか?

4

2 に答える 2

1

と同じようにMembership。定義されたメンバーシップクラスに自動的にマップされます。これにより、すべてのコードを変更することなく、後でプロバイダーを変更できます。

したがって、次のように書く必要はありません。

MyMembershipClass.GetUser 

しかし

Membership.GetUser

ちなみに、カスタムを定義する場合も同じことが言えますRoleProvider。たとえば、次のようになります。

Roles.AddUserToRole(userName, roleName);  

編集

メンバーシップだけで参照する場合、これはdefaultProvider = "MyMembershipClass"によるものですか?

はい、それはから継承するクラスの名前である必要がありますMembershipProvider(またはから継承する別のクラスのようにSqlMembershipProvider)。

存在しない場合でも必要なものを定義できるという2番目のコメントによると、web.configでプロバイダーに「Bob」という名前を付けると例外が発生します。

例外情報:例外タイプ:ConfigurationErrorsException例外メッセージ:デフォルトのメンバーシッププロバイダーが見つかりませんでした。

于 2012-08-24T12:09:13.683 に答える
0

ただのメンバーシップ。メンバーシップの静的メソッドは、プロバイダーのメソッドを呼び出します。

于 2012-08-24T12:10:07.817 に答える