2013-08-23 2 views
0

Im appelant la méthode CreateUserAndAccount donnant String en nom d'utilisateur et mot de passe. Mais je reçois une exception disant que la chaîne codée en dur est nulle. Comment cela est-il possible!?! I-m manque quelque chose ici?WebSecurity CreateUserAndAccount

code: WebSecurity.CreateUserAndAccount("Admin", "Admin", null, false);

SqlException: Impossible d'insérer la valeur NULL dans la colonne 'UserPwd', table 'servidb.dbo.User'; La colonne n'autorise pas les valeurs NULL. INSERT échoue.

J'ai également changé le nom de la table UserProfile en colonne Utilisateur et Mot de passe. Pourrait être ici l'erreur ??

Cordialement. Ps: je ne sais pas quoi d'autre du code à montrer. Si besoin de plus d'informations, s'il vous plaît demander.

edit: En fait, je l'ai fait:

WebSecurity.InitializeDatabaseConnection("connectionString", "User", "UserId", "UserName", autoCreateTables: true);

et j'ai vérifié la DB et la table utilisateur a été créé avec la colonne. Mon code d'entité est celui

[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

Utilisez-EF vous ? Si oui, vous pourriez vouloir changer les Autogeneratetables à false. – Nilesh

+0

Je suis, aussi je tiens à souligner que c'est le code d'abord. Définissez l'autocreate sur false mais toujours en cours. –

+0

Pouvez-vous essayer de créer un utilisateur séparément, puis d'utiliser CreateAccount pour créer un compte dans la table de mémorisation? Voir si cela fonctionne. – Nilesh

Répondre

0

Il est probablement parce que vous avez changé les noms de colonnes, WebSecurity lui-même sait les colonnes à utiliser, il utilise en fait propres tables générées, à l'exception de votre table avec les noms d'utilisateur. C'est probablement dans votre InitializeSimplemembership.cs si vous travaillez sur un modèle Internet.

WebSecurity.InitializeDatabaseConnection([here database username], 
[here database password], [here YOUR talbe name containing user name column], 
[here user name column] , autoCreateTables: true); 

Vous créez donc une seule table avec colonne et que UserName est tout, le reste est créé par WebSecurity dans les nouvelles tables.

+0

thx pour la réponse. J'ai édité le post. Resumen, la colonne UserPwd est créée sur Table User –

0

Essayez ceci:

WebSecurity.CreateUserAndAccount("Admin", "Admin", new {UserPwd = ""}, false) 

Le 3ème paramètre représente un objet anonyme que vous pouvez utiliser pour fournir vos Required champs afin que votre SQL obtient toutes les valeurs non nulles dont il a besoin

Questions connexes