2009-01-07 69 views
2

我写了一个使用自定义数据库模式存储成员的自定义MembershipProvider,但我无法确定如何部署提供程序。我的目标服务器正在运行IIS7,并且我可以导航到一个用于添加.NET用户提供程序的对话框,但不是允许我选择包含提供程序&然后该类的程序集,它提供了一个带有几个MS书面提供者。如何部署ASP.net自定义MembershipProvider?

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

回答

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元素允许您注册多个提供者以供选择。另一个功能是,您可以清除注册在机器上其他配置文件中的成员资格提供商。这可以使配置您的应用程序稍后更容易出错。为此,请在列表中的第一个成员资格提供者(<元素)之前添加<清除/ >元素。

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

如果你只想使用IIS管理器来注册多个Web应用程序相同的供应商,您将需要把该组件在GAC和提供程序添加到计算机的配置文件,而不是一个。部署单个应用程序时,这通常只会带来很少的好处。

+0

您可能还想在。它将摆脱继承的其他成员资格提供程序。 – 2009-01-08 00:19:20

相关问题