2010-03-17 54 views
3

我在我的web.config和我的登录控件中有多个成员供应商,我将使用基于提供者名称的下拉列表的提供者。我可以同时使用多个MembershipProviders吗?

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]; 

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

任何想法?

回答

2

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

夫妇这种行为的事实,所有的烘烤管道和控制的期待与单个提供商合作,你是uscwap

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

干杯

1

是否有可能以这种方式动态选择提供者?我一直认为没有(虽然我从来没有尝试过),在这种情况下,我猜想,当它加载Membership.Providers它停止在它的第一个,MyOwnProvider1在你的情况。

+0

这里的踢球者: 当我想连做:Membership.Providers得到供应商的集合,它提供了配置错误,称这是无法建立安全连接! – 2010-03-17 15:42:51

+0

这意味着它实际上停在第一个,并试图像你说的那样连接到它。 – 2010-03-17 15:47:00

相关问题