我在一个网站上处理多个会员提供商时遇到了问题。
我有一个注册页面,用于创建用户并将其添加到AD域。在我有一个会员提供者之前,我打电话给
Membership.CreateUser(txtUsername.Text, txtPassword.Text)
根据页面上的用户输入创建用户名。
但是,我在web.config中添加了另一个成员资格提供程序,以便可以使用登录页面从另一个AD登录。现在,我的注册页面不起作用,因为(我假设)有两个会员提供商?
我该如何解决这个问题?如何在调用Membership.CreateUser?
时指定要使用的提供程序感谢。
修改
如下所述,正确的方法是:
MembershipCreateStatus newStatus = new MembershipCreateStatus();
Membership.Providers["ProviderName"].CreateUser(txtUserName.Text, txtPassword.Text, null, null, null, true,null, out newStatus);
谢谢!
答案 0 :(得分:9)
Membership.Providers["providername"].CreateUser(....);
请注意,在这种情况下只有一个CreateUser方法,但您可以传递其他不需要的参数的null。
修改强>
这是使用显式提供程序调用该方法的唯一方法。我没有尝试在AD中创建用户,所以不确定解决该错误,但这是另一种方式。 将CreateUser的提供程序作为defaultprovider,这样您就可以返回旧的CreateUser调用。但现在您调整登录呼叫以使用其他提供商,例如
Membership.Providers["providername"].ValidateUser()
答案 1 :(得分:1)
Providers上有Membership个属性,其中包含collection个成员资格提供程序。您应该能够从那里辨别使用哪个提供商。