ASP.netカスタムMembershipProviderを展開するにはどうすればよいですか?
-
05-07-2019 - |
質問
メンバーの保存にカスタムデータベーススキーマを使用するカスタムMembershipProviderを作成しましたが、プロバイダーの展開方法を理解するのに問題があります。私のターゲットサーバーはIIS7を実行しており、.NETユーザープロバイダーを追加するためのダイアログに移動できますが、代わりにプロバイダー<!> ampを含むアセンブリを選択できます。その後、クラスは、MSで書かれたいくつかのプロバイダーでドロップダウンを提供します。
MembershipProviderクラスがIISによって検出されるように、特定の場所にアセンブリをドロップする必要がありますか?もしそうなら、.dllはどこに行く必要がありますか?それ以外の場合、ASP.NetにMembershipProviderを使用するように指示するにはどうすればよいですか?私が見たすべての例は、完全修飾クラス名を参照しているだけですが、ファイルの展開方法については言及していません。
解決
アプリケーションのweb.configファイルを見ると、system.webというセクションが必要です。その中には、プロバイダーのリストを持つメンバーシップ要素があります。プロバイダーを追加し、そこにデフォルトのプロバイダーを設定できるはずです。メンバーシッププロバイダーがこの方法で登録されると、IISからそのアプリケーションのデフォルトとしても選択できるようになります。
<system.web>
...
<membership defaultProvider="MyMembershipProvider"
userIsOnlineTimeWindow="15">
<providers>
<add name="MyMembershipProvider"
type="Common.Auth.MyMembershipProvider, Common"
connectionStringName="MyAuthDBConnectionString"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
writeExceptionsToEventLog="false" />
</providers>
</membership>
...
</system.web>
providers要素を使用すると、複数のプロバイダーを登録して選択できます。もう1つの機能は、マシン上の他の構成ファイルに登録されているメンバーシッププロバイダーをクリアできることです。これにより、アプリケーションの設定でエラーが発生しにくくなります。そのためには、<!> lt; clear / <!> gt;を追加しますリスト内の最初のメンバーシッププロバイダーの前の要素(<!> lt; add / <!> gt;要素)。
<system.web>
...
<membership defaultProvider="MembershipProvider1">
<providers>
<clear />
<add name="MembershipProvider1" ... />
<add name="MembershipProvider2" ... />
</providers>
</membership>
...
</system.web>
IISマネージャーを使用して複数のWebアプリケーションに同じプロバイダーを登録する場合は、アセンブリをGACに配置し、代わりにマシン構成ファイルの1つにプロバイダーを追加する必要があります。これは通常、1つのアプリケーションをデプロイする場合、ほとんどメリットのないより多くの作業です。