RequireUniqueEmail = false不工作MVC 5

时间:2015-01-13 16:15:35

标签: asp.net asp.net-mvc-5

我正在开发一个MVC 5解决方案,我可以管理"组织"用户可以在他们下面注册。我实现了帐户控制器以从注册表中获取组织ID并将其保存在AspNetUsers表中。现在我知道哪个用户属于哪个组织。

但是现在我遇到了一个问题,每当我尝试使用注册到另一个组织的同一个电子邮件注册用户时,我会收到消息:"名称t@t.com已经被采用。"

您知道如何使ASP.NET成员资格允许重复的电子邮件吗?

我尝试在我的帐户控制器中使用下面的代码,但它对我不起作用:

UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager)
{
    RequireUniqueEmail = false
};
var result = await UserManager.CreateAsync(user, model.Password);

有什么想法吗?有没有更好的方法呢?

2 个答案:

答案 0 :(得分:0)

您应该在提供商中停用RequiresUniqueEmail(通过web.config settings)可以启用/禁用众多选项

<membership defaultProvider="MySqlMembershipProvider">
  <providers>
    <clear />
    <add connectionStringName="SimpleConnection" applicationName="abc" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="15" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="MySqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </providers>
</membership>

答案 1 :(得分:0)

问题可能是您使用电子邮件作为用户名而不是单独的用户名字段。因此Name t@t.com is already taken - 它将t@t.com视为用户名。创建一个唯一的用户名。