c# - 为什么当我想注册第二个用户时 MVC 简单成员(member) token 返回 null?

标签 c# asp.net-mvc simplemembership

我不知道出了什么问题,但我无法为第二个用户获取成员身份 token 。我可以轻松地注册第一个用户,但是当我想注册第二个用户时, token 变为空。我可以让用户访问 Controller ,WebSecurity.CreateUserAndAccount 方法也可以从用户那里获取值。它是在数据库的用户表中创建的,而不是在 dbo.webpages_Membership 表中创建的。我已经删除了数据库并迁移了两次。每次我注册第一个用户都没有问题。但是在注册另一个用户时遇到了问题。

请看我的代码;

我的注册 View ;

  @using (Html.BeginForm("Register", "Admin", FormMethod.Post))
                {
                    @Html.AntiForgeryToken()
                    @Html.ValidationSummary(true)
                    <form action="#">
                        <input type="text" name="Name" placeholder="Ad" />
                        <input type="email" name="Email" placeholder="E-posta Adresi" />
                        <input type="password" id="PasswordId" name="Password" placeholder="Şifre" />
                        <input type="password" id="PasswordConfirmId" name="PasswordConfirm" placeholder="Şifreni Onayla" /><label id="mismatch" style="visibility:hidden">Şifre uyuşmuyor</label>
                        <button type="submit" class="btn btn-default">Hesap Oluştur</button>
                    </form>
                }

我的 Controller ;

    public ActionResult Register()
    {
        return View();
    }  

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Register(User user)
    {
        if (ModelState.IsValid)
        {
            try
            {
                string token = WebSecurity.CreateUserAndAccount(user.Email, user.Password, new { user.Password, user.PasswordConfirm, user.Email, user.Name }, true);

                int userId = db.Users.FirstOrDefault(u => u.Email == user.Email).Id;
                SendMail(user.Email, user.Password, user.Name, userId, token);
                if (!Roles.RoleExists("User"))
                    Roles.CreateRole("User");
                Roles.AddUserToRole(user.Email, "User");

                return RedirectToAction("Index", "Home");
            }
            catch (MembershipCreateUserException ex)
            {
                ViewBag.Error = ex.Message;
                return View(user);
            }
        }
        return View(user);
    }

最佳答案

我发现问题是 SQL Collat​​ion 问题。 CreateUserAndAccount 方法尝试将电子邮件“gmail”提升为“GMAİL”。由于英文中没有这样的字符,因此返回错误。

我已经解决了在 try 语句之前添加一行代码并使用 UpperEmail 更改 user.Email 参数的问题。

string UpperEmail = user.Email.ToUpper().ToString();

关于c# - 为什么当我想注册第二个用户时 MVC 简单成员(member) token 返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425517/

相关文章:

asp.net-mvc-3 - SimpleMembership MVC3 无法加载文件或程序集 WebMatrix.Data

asp.net-mvc - 缺少网页_UsersInRoles

c# - 显示根据列排序自动生成的 SQL 代码

C# 不同文件中的相同命名空间

c# - Razor View 中的 ViewModel 与 InputModel

c# - 在 MVC 中获取子域以实现国际化

asp.net-mvc - MVC 使用 SimpleMembership 检索用户名

c# - 是否可以自动为 SQL Server 和 LINQ to SQL 中的所有表名添加前缀?

c# - 如何通过 UTC 偏移量确定时区?

c# - 如何手动触发 Hangfire 作业?