WebSecurity CreateUserAndAccount
本文关键字:CreateUserAndAccount WebSecurity | 更新日期: 2023-09-27 18:28:52
Im调用CreateUserAndAccount方法,在用户名和密码中给出String。但是我得到一个异常,说硬编码字符串为null。这怎么可能!?!我在这里错过了什么?
代码:WebSecurity.CreateUserAndAccount("Admin", "Admin", null, false);
SQLEXCEPTION:无法将值NULL插入表"servidb.dbo.User"的列"UserPwd"中;列不允许为null。INSERT失败。
我也将表的名称从UserProfile更改为User和Password列。可能是这里的错误??
谨致问候。
ps:我不知道还有什么代码要显示。如果需要更多信息,请询问。
编辑:事实上我做到了:
WebSecurity.InitializeDatabaseConnection("connectionString", "User", "UserId", "UserName", autoCreateTables: true);
然后我检查了DB,并使用该列创建了表User。我的实体代码是这个
[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; }
}
试试这个:
WebSecurity.CreateUserAndAccount("Admin", "Admin", new {UserPwd = ""}, false)
第三个参数表示一个匿名对象,您可以使用它来提供Required
字段,以便SQL获得所需的所有非null值
这可能是因为您更改了这些列名,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在新表中创建。