我编写了一个自定义MembershipProvider,它使用自定义数据库模式来存储成员,但我无法弄清楚如何部署提供程序。我的目标服务器正在运行IIS7,我可以导航到添加.NET用户提供程序的对话框,但不允许我选择包含提供程序和组件的程序集。然后是课程,它提供了一些MS写入提供者的下拉列表。
我是否需要将程序集放在特定位置,以便IIS发现我的MembershipProvider类?如果是这样,.dll需要去哪里?否则,如何告诉ASP.Net使用我的MembershipProvider?我见过的每个例子都只引用了完全限定的类名,但没有提到需要如何部署文件。
答案 0 :(得分: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>
providers元素允许您注册多个提供者以供选择。另一个功能是您可以清除在计算机上的其他配置文件中注册的成员资格提供程序。这可以使您的应用程序配置不再容易出错。为此,请添加&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中,并将提供程序添加到其中一个计算机配置文件中。在部署单个应用程序时,这通常更有效,但收效甚微。