2

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

我是否需要将程序集放在特定位置,以便 IIS 发现我的 MembershipProvider 类?如果是这样,.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>

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

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

如果您想仅使用 IIS 管理器向多个 Web 应用程序注册同一个提供程序,则需要将程序集放入 GAC 并将提供程序添加到机器配置文件之一。在部署单个应用程序时,这通常是更多的工作而没有什么好处。

于 2009-01-07T23:48:22.600 回答