我调用CreateUserAndAccount方法,在用户名和密码中给出String。但我得到一个例外,说硬编码字符串为空。 怎么可能这样!!! 我在这里遗漏了什么?
代码:WebSecurity.CreateUserAndAccount("Admin", "Admin", null, false);
SQLEXCEPTION:无法将值NULL插入“UserPwd”列,表'servidb.dbo.User';列不允许空值。 INSERT失败。
我也将表的名称从UserProfile更改为User和Password列。可能在这里犯了错误吗?
问候。
ps:我不知道要显示的其他代码。如果需要更多信息,请询问。
编辑:实际上我做了:
WebSecurity.InitializeDatabaseConnection("connectionString", "User", "UserId", "UserName", autoCreateTables: true);
我检查了数据库,用户是用列创建的。我的实体代码就是这个
[Table("User")]
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
[Required]
public string UserName { get; set; }
[Required]
public string UserPwd { get; set; }
}
答案 0 :(得分:0)
可能是因为您更改了这些列名称,WebSecurity知道自己使用哪些列,它实际上使用自己生成的表,除了具有用户名的表。如果您正在使用Internet模板,可能它在您的InitializeSimplemembership.cs中。
WebSecurity.InitializeDatabaseConnection([here database username],
[here database password], [here YOUR talbe name containing user name column],
[here user name column] , autoCreateTables: true);
因此,您只创建一个具有UserName列的表,这就是全部,其余的是由新表中的WebSecurity创建的。
答案 1 :(得分:0)
试试这个:
WebSecurity.CreateUserAndAccount("Admin", "Admin", new {UserPwd = ""}, false)
第3个参数表示一个匿名对象,可用于提供Required
字段,以便SQL获取所需的所有非空值