如何部署ASP.net自定义MembershipProvider?

Mic*_*ang 2 asp.net asp.net-membership membership-provider

我编写了一个自定义MembershipProvider,它使用自定义数据库模式来存储成员,但是我无法弄清楚如何部署提供程序.我的目标服务器正在运行IIS7,我能够导航到添加.NET用户提供程序的对话框,但是它不是允许我选择包含提供程序然后是类的程序集,而是提供一个下拉列表几个MS书面提供者.

我是否需要将程序集放在特定位置,以便IIS发现我的MembershipProvider类?如果是这样,.dll需要去哪里?否则,如何告诉ASP.Net使用我的MembershipProvider?我见过的每个例子都只引用了完全限定的类名,但没有提到需要如何部署文件.

Chu*_*uck 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>
Run Code Online (Sandbox Code Playgroud)

providers元素允许您注册多个提供程序以供选择.另一个功能是您可以清除在计算机上的其他配置文件中注册的成员资格提供程序.这可以使您的应用程序配置不再容易出错.为此,请在列表中的第一个成员资格提供程序(<add />元素)之前添加<clear />元素.

<system.web>
    ...
    <membership defaultProvider="MembershipProvider1">
        <providers>
            <clear />
            <add name="MembershipProvider1" ... />
            <add name="MembershipProvider2" ... />
        </providers>
    </membership>
    ...
</system.web>
Run Code Online (Sandbox Code Playgroud)

如果要仅使用IIS管理器向多个Web应用程序注册同一提供程序,则需要将程序集放在GAC中,并将提供程序添加到其中一个计算机配置文件中.在部署单个应用程序时,这通常会带来很多好处.