我已经编写了一个自定义MembershipProvider,该自定义MembershipProvider使用自定义数据库架构存储成员,但是在弄清楚如何部署该提供程序时遇到了麻烦。我的目标服务器正在运行IIS7,我可以导航到一个对话框以添加.NET用户提供程序,但不是让我选择包含提供程序和该类的程序集,而是提供了一个带有几个MS书面提供者。
我是否需要将程序集放置在特定位置,以便IIS发现我的MembershipProvider类?如果是这样,.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>
provider元素允许您注册多个提供者以供选择。另一个功能是,您可以清除在计算机上其他配置文件中注册的成员资格提供程序。这样可以在以后配置应用程序时减少错误。为此,请在列表中的第一个成员资格提供程序(元素)之前添加元素。
<system.web>
...
<membership defaultProvider="MembershipProvider1">
<providers>
<clear />
<add name="MembershipProvider1" ... />
<add name="MembershipProvider2" ... />
</providers>
</membership>
...
</system.web>
如果仅使用IIS管理器就想向多个Web应用程序注册同一提供程序,则需要将该程序集放入GAC中,并将提供程序添加到其中一个计算机配置文件中。在部署单个应用程序时,这通常会花更多的功夫而几乎没有收益。