我可以同时使用多个会员提供商吗?

时间:2010-03-17 15:34:46

标签: asp.net asp.net-membership membership-provider

我的web.config和登录控件中有多个成员资格提供程序,

我将根据提供商名称的下拉列表使用提供程序。

的Web.config:

<system.web>
    <membership>
      <providers>
        <remove clear />
        <add name="MyOwnProvider1" .... />
        <add name="MyOwnProvider2" .... />
      </providers>
    </membership>
  </system.web>

在Login.ascx.cs中:

我正在根据下拉列表选择提供商:

MembershipProvider provider = Membership.Providers[dropDownList.SelectedItem.Text];

问题是每当我点击这一行时,它总是尝试连接到MyOwnProvider1,而实际上是MyOwnProvider2被选中了!

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您遇到问题的原因是,当应用程序启动时,提供程序在成员资格元素中标记为defaultProvider或第一个提供程序遇到,从web.config开始并向上游移动到根网站。 .net framework / config目录中的config是已初始化,使其成为 成员资格提供者。

将这种行为与以下事实相结合:管道和控件中的所有内容都希望与单个提供程序一起使用,并且您是uscwap

为了做出类似这样的工作,您将不得不实现一个自定义成员资格提供程序,它充当多个身份验证源的外观或聚合器,并将其添加为web.config中的单个提供程序。

干杯

答案 1 :(得分:1)

是否有可能以这种方式动态选择提供商?我总是假设没有(虽然我从来没有尝试过),在这种情况下,我猜想当它加载Membership.Providers时,它会停在它所遇到的第一个,你的情况下是MyOwnProvider1。