2011-05-19 51 views
4

我在处理一个网站上的多个成员供应商时遇到问题。Membership.CreateUser多个成员供应商

我有一个注册页面,用于创建用户并将其添加到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); 

谢谢!

回答

8
Membership.Providers["providername"].CreateUser(....); 

需要注意的是,只有一个在这种情况下CREATEUSER方法,但你可以通过不需要的其他参数为空。

编辑:

这是调用有明确提供该方法的唯一途径。我还没有尝试在AD中创建用户,因此不确定是否解决该错误,但这是另一种方式。 使CreateUser的提供者成为您的默认提供者,因此您可以返回到旧的CreateUser调用。但是现在您可以调整登录电话以使用其他提供商,例如

Membership.Providers["providername"].ValidateUser() 
+0

谢谢!这应该工作,但是,当我将一个空对象传递给“object providerUserKey”对象时,该函数会调用错误。 “ ”返回的错误是Active Directory成员资格提供程序不支持设置providerUserKey属性。“ 有没有正确的方法来调用该方法? – 2011-05-19 19:49:00

+0

啊,问题是我传递了一个空对象,而不是仅仅是null关键字。 再次感谢! – 2011-05-19 20:22:43