10
votes

Identity 2.1 - Userid introuvable mais travaillait avant

Ce code a fonctionné avant de nombreuses fois, mais après avoir ajouté dans quelques nouvelles propriétés pour un utilisateur en identité 2.1, il a cessé de travailler soudainement. Je reçois une erreur d'utilisateur introuvable, malgré une valeur visible dans le débogueur pour ID utilisateur. Quelqu'un a-t-il une idée de la raison pour laquelle cela s'est soudainement arrivé? Il est très frustrant de voir le moins.

Voici le code: (Contrôleur) xxx

et le modèle: xxx

et l'erreur suivante: xxx < / pré>


4 commentaires

UserID peut avoir une valeur dans le débogueur mais le userid n'est pas trouvé dans la base de données. Avez-vous vérifié que c'est présent dans la DB?


C'est "ID" dans la colonne de la base de données. Semble être correct afaik.


Essayez d'ajouter usermanager.updateasync () ' ou d'obtenir l'identifiant par nom d'utilisateur à partir de l'Usermanager après avoir créé l'utilisateur.


@Deamcasting, je reçois la même erreur. comment avez-vous résolu cela s'il vous plaît suggérer d'attendre votre réponse


3 Réponses :


6
votes

avoir la même erreur en ce moment! La seule action récente pertinente que j'ai faite est la mise à jour des packages à Nuget:

  • EntityFramework 6.1.1 à 6.1.3
  • Microsoft ASP.NET Identitycore 2.1.0to 2.2.1
  • Microsoft ASP.NET Identity EntityFramework 2.1.0 à 2.2.1
  • Identity Microsoft ASP.NET OWIN 2.1.0 à 2.2.1

    Enquête toujours quand même ...

    mise à jour

    Dans mon cas, j'essayais de générer le jeton de confirmation avant d'enregistrer l'utilisateur. J'ai appris que usermanager.generateMailConfirmationTokenasync (userid) génère le jeton lors d'une identification enregistrée, pas celle que vous avez en mémoire.

    J'espère que cela aide, d'une manière ou d'une autre.


1 commentaires

J'essayais de définir un mot de passe avant de créer l'utilisateur et cela provoque la même erreur. Call CreateUser (utilisateur) Tout d'abord, puis effectuez vos opérations avec le jeton de confirmation de courrier électronique ou les codes de mot de passe, etc.



4
votes

Cette exception n'est pas générée par utilisateur de l'application , il n'y a pas de propriété nommée userid dans cette classe. (son ID pas userid )

Il existe donc deux tables dans la base de données identité contient une colonne avec userid

  1. identitérole
  2. identitéUserrole

    Par conséquent, une exception est soulevée lors de l'insertion dans ces tables, il n'y a rien de mal avec ApplicationUser.ID . Assurez-vous que le rôle avec nom "utilisateur" existe. Vérifiez également le cas de nom I.E. "utilisateur" / "utilisateur"


0 commentaires

1
votes

Si, comme moi, vous avez du mal à obtenir un cadre d'identité fonctionnant sans apprécier pleinement tous les instantanmes, cela peut aider. J'utilisais cette ligne pour obtenir une référence à l'utilisateur: xxx

ceci crée un nouvel utilisateur. Ce que j'aurais dû faire est d'utiliser cette ligne: xxx

Vous pouvez ensuite réinitialiser le mot de passe comme celui-ci: xxx note que cela n'a pas de vérification erronée.


0 commentaires