Problème de nom d'utilisateur du serveur de communauté - Le nom d'utilisateur introuvable dans le magasin de membres n'existe pas
-
03-07-2019 - |
Question
J'ai une erreur fréquente liée à l'installation de notre serveur de communauté lorsque le fichier googlesitemap.ashx est traversé sur un sectionID spécifique. Je soupçonne qu'un nom d'utilisateur a été modifié, mais les publications n'ont pas été relocalisées pour refléter cela.
Existe-t-il un moyen de vérifier l’intégrité des données en effectuant une instruction select sur la base de données; sinon, existe-t-il un moyen de forcer la base de données à se remettre en cache?
La solution
Cette erreur peut être générée par le serveur de communauté s'il trouve des utilisateurs qui ne sont pas dans l'instance de MemberRoleProfileProvider.
Voir CommunityServer.Users AddMembershipDataToUser () à titre d'exemple
UPDATE:
J'ai résolu ce problème pour mon cas en remarquant que les noms d'utilisateur sont stockés dans deux tables - cs_Users et aspnet_Users. Il s'avère que le nom d'utilisateur était différent dans chaque table. La mise à jour manuelle afin que les noms soient identiques a résolu ce problème.
De même, l'utilisateur n'aurait pas adhéré à la ligne suivante de la procédure stockée cs_Membership_GetUsersByName :
INSERT INTO @tbUsers
SELECT UserId
FROM dbo.aspnet_Users ar, @tbNames t
WHERE LOWER(t.Name) = ar.LoweredUserName AND ar.ApplicationId = @ApplicationId
@tbNames est une table de noms provenant de cs_Users (?) à un moment donné. Par conséquent, les noms d'utilisateur ne correspondent pas et l'utilisateur n'a pas été inséré ultérieurement dans le résultat.
Voir aussi: http://dev.communityserver.com/ forums / t / 490899.aspx? PageIndex = 2
Autres conseils
Pas vraiment une réponse, mais vous pouvez trouver les entrées de données affectées en lançant la requête suivante ...
Select *
FROM cs_Posts
Where UserID Not In (Select UserID
From cs_Users Where UserAccountStatus = 2)