Problema del nome utente del server della comunità - Il nome utente dell'utente non trovato nell'archivio appartenenze non esiste
-
03-07-2019 - |
Domanda
Si verifica spesso un errore durante l'installazione del nostro server della comunità ogni volta che googlesitemap.ashx viene attraversato su uno specifico ID sezione. Sospetto che un nome utente sia stato modificato ma i post non sono stati ricollegati per riflettere questo.
Esiste un modo per verificare l'integrità dei dati eseguendo un'istruzione select sul database, in alternativa esiste un modo per forzare la ricache del database?
Soluzione
Questo errore potrebbe essere generato dal server della comunità se trova utenti che non si trovano nell'istanza di MemberRoleProfileProvider.
Vedi CommunityServer.Users AddMembershipDataToUser () come esempio
UPDATE:
Ho risolto questo problema nel mio caso notando che i nomi utente sono memorizzati in due tabelle: cs_Users e aspnet_Users. Risulta in qualche modo il nome utente era DIVERSO in ogni tabella. L'aggiornamento manuale in modo che i nomi fossero gli stessi risolto questo problema.
Inoltre, l'utente verrebbe escluso dall'appartenenza alla seguente riga della procedura memorizzata 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 è una tabella di nomi che proviene da cs_Users (?) ad un certo punto e quindi i nomi utente non corrispondono e l'utente non è stato inserito nel risultato in seguito.
Vedi anche: http://dev.communityserver.com/ Forum / t / 490899.aspx? pageIndex = 2
Altri suggerimenti
Non tanto una risposta, ma puoi trovare le voci di dati interessate eseguendo la seguente query ...
Select *
FROM cs_Posts
Where UserID Not In (Select UserID
From cs_Users Where UserAccountStatus = 2)