对于此overload:
if CreateUser("username@email.com","pwd")
,失败并显示错误消息:提供的电子邮件地址无效。请检查该值,然后重试。
但是CreateUser("username@email.com","pwd","username@email.com")
,成功!
为什么?
答案 0 :(得分:2)
考虑这样的方法可能会更好:
CreateUser(Username, Password);
CreateUser(Username, Password, Email);
在没有反映代码的情况下,我不能肯定地说100%,但我敢打赌这些函数只是调用一个内部函数来接收每个可能的参数。
所以你的第一个电话(简化)实际上是:
CreateUser("username@email.com", "pwd", null);
如果您已将提供商配置为需要电子邮件地址,则null
无效。
来自MSDN docs:
SqlMembershipProvider提供了一个要求唯一的选项 每个用户的电子邮件地址。 如果是RequiresUniqueEmail属性 是的,您需要使用允许的CreateUser重载之一 您可以为正在创建的用户指定电子邮件地址。 否则,将抛出MembershipCreateUserException。