websecurity.createuserandaccount sqlexception

时间:2015-10-08 22:59:59

标签: .net asp.net-mvc sqlexception

当我尝试在我的应用中创建一个帐户时,它会抛出一个SQL异常:

  

类型' System.Data.SqlClient.SqlException'的异常发生在   System.Data.dll但未在用户代码中处理

     

附加信息:无法将值NULL插入列中   '用户名',表'&#39 ;;列不允许空值。 INSERT失败。

     

声明已经终止。

这是我的注册功能

[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                try
                {
                    WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                    WebSecurity.Login(model.UserName, model.Password);
                    db.Users.Add(new User {
                        UserName = model.UserName,
                        FullName = model.FullName
                    });
                    db.SaveChanges();
                    return RedirectToAction("Index", "Home");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }

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

显然,我将所需的model.UserNamemodel.Password传递给函数,但它仍然会抛出错误,说它无法接受NULL值。

以下是我的全球Application_Start()

if(!WebMatrix.WebData.WebSecurity.Initialized)
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserName", "FullName", autoCreateTables:true ); 

这是我的注册模式

public class RegisterModel
    {
        [Required]
        [RegularExpression("[a-zA-Z0-9_-]{3,12}",ErrorMessage="Username must consist of between 3 and 12 characters (only letters, numbers, dashes, and underscores allowed)")]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        [Required]
        [StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [Display(Name = "Full Name")]
        public string FullName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }

0 个答案:

没有答案