2015-01-13 50 views
2

我正在开发一个MVC 5解决方案,我可以管理“组织”,用户可以在其下注册。我实现了帐户控制器以从注册表单中获取组织ID并将其保存在AspNetUsers表中。现在我知道哪个用户属于哪个组织。RequireUniqueEmail = false不工作MVC 5

但是现在我遇到了一个问题,每次我尝试使用注册到另一个组织的相同电子邮件注册用户时,我都会收到以下消息:“名称[email protected]已被占用。

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

我想下面使用此代码我的账户控制器内,但它并没有为我工作:

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

任何想法?有没有更好的方法来做到这一点?

+0

你的问题的任何解决方案? – Rod

回答

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> 
0

的问题可能是你使用电子邮件作为用户名,而不是一个单独的用户名字段。因此Name [email protected] is already taken - 它将[email protected]作为用户名。创建一个唯一的用户名。