1

目前我的 asp.net 应用程序有 5 个 ActiveDirectoryMembershipProvider 和 1 个 SqlMembershipProvider。在不久的将来,这两个数字都必将至少增加一些。问题是我们正在验证的一些域是不稳定的。因此,例如,周日 30 分钟内,五分之一的人可能无法到达。当来自任何提供商的用户在此期间尝试登录时,他们无法登录,因为 Providers 集合会引发错误。因此,如果一个人倒下了,他们都倒下了。不好玩。

我已经尝试了大约 72 种不同的方法来解决这个问题,但都没有运气。这是我的前3名。

1:将它们全部添加到web.config中,覆盖登录控制验证并循环遍历所有Membership.Providers。ValidateUser 直到我们有一个匹配。除非出现上述问题,否则效果很好。如果有一个倒下,集合就会溢出,没有人进入。

B. 仅针对默认提供者进行身份验证。让用户选择要使用的提供程序并使用 WebConfigurationManager 将其更改为默认提供程序。非常棒,除了您实际上是在运行时更改 web.config 文件...哎呀!我这样做了吗?

三、检查域用户想要登录的自定义提供程序,并在 Initiate() 中从 web.config 以外的源提供适当的配置值。包含所有单独提供者信息的数据库表。然后我们总是在自定义提供商上验证用户,然后他们检查用户选择的域/提供商,插入信息并关闭我们去。这有效,除非我注销然后使用 diff 域登录...我不能这样做,因为它已经初始化为您之前选择的另一个域。

也许我错过了一些简单的东西?但愿如此。StackOverflow,你是我唯一的希望。

4

0 回答 0