我的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被选中了!
有什么想法吗?
答案 0 :(得分:2)
您遇到问题的原因是,当应用程序启动时,提供程序在成员资格元素中标记为defaultProvider或第一个提供程序遇到,从web.config开始并向上游移动到根网站。 .net framework / config目录中的config是已初始化,使其成为 成员资格提供者。
将这种行为与以下事实相结合:管道和控件中的所有内容都希望与单个提供程序一起使用,并且您是uscwap。
为了做出类似这样的工作,您将不得不实现一个自定义成员资格提供程序,它充当多个身份验证源的外观或聚合器,并将其添加为web.config中的单个提供程序。
干杯
答案 1 :(得分:1)
是否有可能以这种方式动态选择提供商?我总是假设没有(虽然我从来没有尝试过),在这种情况下,我猜想当它加载Membership.Providers
时,它会停在它所遇到的第一个,你的情况下是MyOwnProvider1。