質問

メンバーの保存にカスタムデータベーススキーマを使用するカスタム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つのアプリケーションをデプロイする場合、ほとんどメリットのないより多くの作業です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top