asp.net-mvc - .Net 成员(member)服务提供商没有发现重复的电子邮件

标签 asp.net-mvc error-handling membership

我对 .Net/MVC3 比较陌生,并且正在研究使用默认成员资格提供程序的 C#、MVC3、EF4 应用程序。从我的阅读来看,它应该会自动捕获重复的电子邮件,但它似乎并没有这样做,我不确定为什么。我真正需要弄清楚的是在哪里查看正确的部分是否到位,以及为什么它可能不进行验证检查的原因(它似乎可以执行大多数/所有其他操作,例如重复用户名,或无效的密码格式等,只有重复的电子邮件没有被捕获。)

自定义包括将新用户添加到特定角色,以及重定向到“第一次”欢迎页面。

这是代码:

    // POST: /Account/Register

    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;
            Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                Roles.AddUserToRole(model.UserName, "Registered");
                //return RedirectToAction("Index", "Home");
                return RedirectToAction("Acceptance", "Account");
            }
            else
            {
                ModelState.AddModelError("", ErrorCodeToString(createStatus));
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

以下是(未触及的)验证方法:
 #region Status Codes
    private static string ErrorCodeToString(MembershipCreateStatus createStatus)
    {
        // See http://go.microsoft.com/fwlink/?LinkID=177550 for
        // a full list of status codes.
        switch (createStatus)
        {
            case MembershipCreateStatus.DuplicateUserName:
                return "User name already exists. Please enter a different user name.";

            case MembershipCreateStatus.DuplicateEmail:
                return "A user name for that e-mail address already exists. Please enter a different e-mail address.";

等等。

最佳答案

默认情况下,只有用户名必须是唯一的。如果您还需要唯一的电子邮件地址,则必须在 MembershipProvider 的 Web.config 条目中设置该地址。

就像是

<membership>
  <providers>
    <add name="AspNetSqlMembershipProvider" [...] requiresUniqueEmail="true" [...] />
  </providers>
</membership>

关于asp.net-mvc - .Net 成员(member)服务提供商没有发现重复的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593652/

相关文章:

c# - 在 .NET 成员资格中使用 List 类型的配置文件属性

c# - 用户输入月份编号 1-12 并且 http post 返回月份名称的应用程序不起作用

asp.net - ASP.NET MVC 2 : Dynamic themes

javascript - 我需要在 JavaScript 中的 `return` 之后添加 `throw` 吗?

php - 如何判断文件是否可从脚本写入?

error-handling - 问号运算符如何转换错误类型? [复制]

python - python的 `in`函数在通过 `__getitem__()`'触发时是如何工作的?

asp.net - 网站管理工具 : Unable to connect to SQL Server database

c# - 如何使用 tracker-enabled-dbcontext 定位另一个数据库

ASP.NET MVC。扩展 HtmlHelper 与自定义类