Ich versuche, den Manager des Benutzers abzurufen:SPServiceContext mit SiteSubscriptionId von {00000000-0000-0000-0000-000000000000} abrufen
-
10-12-2019 - |
Frage
Ich versuche, den Manager eines Benutzers mit diesem Code zu erreichen:
SPSecurity.RunWithElevatedPriviliges(delegate
{
SPSite site = new SPSite(SPContext.Current.Site.Url);
SPServiceContext context = SPServiceContext.GetContext(site);
UserProfileManager profileManager = new UserProfileManager(context);
//Note that I have an SPUser object, user, previously defined.
UserProfile userProfile = profileManager.GetUserProfile(user.ID);
UserProfile managerProfile = userProfile.GetManager();
});
Mein Problem ist, dass ich einen Null-UserProfileManager erhalte.Ich vermute, dass es daran liegt, dass der SPServiceContext eine SiteSubcriptionId von {00000000-0000-0000-0000-000000000000} hat.
Ich debugge dies auf meinem lokalen SharePoint-Server.Ich verwende es in einer Entwicklungsumgebung unter Windows 7.Zeigt dieser Fehler ein Problem mit meiner Umgebung an?
Gibt es eine bessere Möglichkeit, den Manager eines bestimmten SPUser zu ermitteln?
BEARBEITEN:
Es scheint, dass weder auf meinem lokalen Computer noch auf meinem Testserver der Benutzerprofildienst ordnungsgemäß eingerichtet ist.Das ist wahrscheinlich der Grund, warum es nicht funktioniert.Ich werde versuchen, das zum Laufen zu bringen und sehen, ob das Problem weiterhin besteht.
Lösung
Die leere Guid hier ist eigentlich nicht besorgniserregend.Die SiteSubscriptionId ist immer eine leere Guid, es sei denn, Sie haben in Ihrer Umgebung Mehrmandantenfähigkeit aktiviert.
Aktivieren der Multi-Tenant-Unterstützung in SharePoint 2010
Möglicherweise müssen Sie für Ihren Benutzer eine Berechtigung für die Benutzerprofildienstanwendung hinzufügen.
In Konfigurieren Sie Benutzerprofil-Synchronisierungsverbindungen Sie versuchten, das zu bekommen UserProfileManager
über PowerShell und es wird eine Fehlermeldung angezeigt (NullReferenceException
), löste das Problem jedoch, indem sichergestellt wurde, dass das Benutzerkonto versuchte, das abzurufen UserProfileManager
hatte Berechtigungen:
1) Als Administrator mit voller Kontrolle
2) Verbindungsberechtigungen als Vollzugriff
Dann haben Sie Zugriff auf den Verbindungsmanager und können programmgesteuert auf die Verbindungen zugreifen.
Andere Tipps
Zusätzlich zum Administrator und der Erlaubnis auf der UPSA musste ich den SharePoint-Setup-Benutzer als DB_Owner auf dem profiledb hinzufügen.