2

カスタム データベース スキーマを使用してメンバーを格納するカスタム MembershipProvider を作成しましたが、プロバイダーのデプロイ方法がわかりません。私のターゲット サーバーは IIS7 を実行しており、.NET ユーザー プロバイダーを追加するためのダイアログに移動できますが、プロバイダーとクラスを含むアセンブリを選択する代わりに、 MS によって書かれたプロバイダーのカップル。

MembershipProvider クラスが IIS によって検出されるように、特定の場所にアセンブリをドロップする必要がありますか? その場合、.dll はどこに移動する必要がありますか? それ以外の場合、ASP.Net に私の MembershipProvider を使用するように指示するにはどうすればよいですか? 私が見たすべての例は、完全修飾クラス名を参照しているだけで、ファイルをどのようにデプロイする必要があるかについては言及していません。

4

1 に答える 1

8

アプリケーションの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>

プロバイダー要素を使用すると、複数のプロバイダーを登録して選択できます。もう1つの機能は、マシン上の他の構成ファイルに登録されているメンバーシッププロバイダーをクリアできることです。これにより、アプリケーションの構成で後でエラーが発生しにくくなります。これを行うには、リストの最初のメンバーシッププロバイダー(<add />要素)の前に<clear/>要素を追加します。

<system.web>
    ...
    <membership defaultProvider="MembershipProvider1">
        <providers>
            <clear />
            <add name="MembershipProvider1" ... />
            <add name="MembershipProvider2" ... />
        </providers>
    </membership>
    ...
</system.web>

IISマネージャーを使用して同じプロバイダーを複数のWebアプリケーションに登録する場合は、アセンブリをGACに配置し、代わりにプロバイダーをマシン構成ファイルの1つに追加する必要があります。これは通常、単一のアプリケーションをデプロイする場合、ほとんどメリットがないため、より多くの作業になります。

于 2009-01-07T23:48:22.600 に答える