2009-11-04 4 views
0

J'ai une erreur bizarre. Lors de la création de l'utilisateur, si un nom d'utilisateur existe déjà dans le système, j'effectue quelques vérifications et permet à l'utilisateur de s'inscrire à nouveau si le compte existant n'est pas encore activé. Je reçois une erreur qui dit:Erreur bizarre dans ASP.net UserCreate Wizard

[NullReferenceException: Object reference not set to an instance of an object.] 
LAUNCHOnline.en.ca.CreateUser.wCreateUser_Error(Object sender, CreateUserErrorEventArgs e) in C:\Projects\LAUNCH\LAUNCH-Online\LAUNCHOnline\en\ca\CreateUser.aspx.cs:194 

Mon code: (var Vuser est la ligne provoquant l'erreur)

protected void wCreateUser_Error(object sender, CreateUserErrorEventArgs e) 
    { 
     // TODO: more verbose error messages. 
     if (e.CreateUserError == MembershipCreateStatus.DuplicateEmail) 
     { 
      // WORK IN PROGRESS 
      // If the user is not activated yet, update the existing user info with the new info 
      // as it might be a feedback user. Else, give an error. 
      // Get the user from the database. 
      var vUser = (from u in this.dcLAUNCHOnline.aspnet_Users 
         where u.UserName.Equals(this.wCreateUser.UserName) 
         select u).Single(); 

Note: Le nom d'utilisateur de l'utilisateur est tout simplement leur e-mail. J'ai vérifié manuellement, et les gens qui reçoivent cette erreur ont déjà un compte dans la base de données, mais reçoivent toujours cette erreur. Le cas du nom d'utilisateur n'a pas causé le problème, car j'ai essayé différents cas avec des comptes temporaires et cela a bien fonctionné.

Toute aide appréciée - merci!

Répondre

1

Si l'exception NullReferenceException est lancée à partir de cette ligne:

var vUser = (from u in this.dcLAUNCHOnline.aspnet_Users 
         where u.UserName.Equals(this.wCreateUser.UserName) 
         select u).Single(); 

Le problème doit être l'un des cas suivants (ou l'absence):
dcLAUNCHOnline.aspnet_Users
this.wCreateUser
OU aucun résultat à partir de
from u in this.dcLAUNCHOnline.aspnet_Users where u.UserName.Equals(this.wCreateUser.UserName)

Je vous suggère de déboguer pour savoir lequel ou plusieurs est/sont null.

+0

Ce code fonctionne pour les comptes de test fictifs que j'ai créés. Ils semblent arriver ici et mis à jour en fonction du code suivant. Je vais essayer de le déboguer localement - un problème est que ma base de données distante et locale est différente, donc il me faudra peut-être un peu de temps pour revenir sur le débogage des comptes spécifiques à l'origine du problème. Merci beaucoup pour la réponse rapide. – stringo0

+0

@ stringo0: Bonne chance dans votre débogage! –

+0

Mise à jour du débogage: dcLAUNCHOnline.aspnet_Users & this.wCreateUser sont valides. Comment puis-je tester la requête elle-même? Merci! – stringo0