Пытаюсь получить менеджер пользователей:Получение SPServiceContext с SiteSubscriptionId {00000000-0000-0000-0000-000000000000}
-
10-12-2019 - |
Вопрос
Я пытаюсь получить менеджера пользователей с помощью этого кода:
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();
});
Моя проблема в том, что я получаю нулевой UserProfileManager.Я подозреваю, что это потому, что SPServiceContext имеет SiteSubcriptionId {00000000-0000-0000-0000-000000000000}.
Я отлаживаю это на своем локальном сервере SharePoint.Я запускаю его в среде разработки в Windows 7.Означает ли эта ошибка проблему с моей средой?
Есть ли лучший способ получить менеджера данного SPUser?
РЕДАКТИРОВАТЬ:
Похоже, что ни на моем локальном компьютере, ни на моем тестовом сервере служба профилей пользователей не настроена должным образом.Вот, наверное, поэтому и не работает.Я попытаюсь заставить это работать и посмотреть, есть ли у меня проблема.
Решение
Пустой гайд здесь на самом деле не имеет значения.SiteSubscriptionId всегда будет пустым Guid, если в вашей среде не включена мультитенантность.
Включение поддержки нескольких клиентов в SharePoint 2010
Возможно, вам потребуется добавить разрешение для вашего пользователя в приложении-службе профилей пользователей.
В Настройка подключений для синхронизации профиля пользователя они пытались получить UserProfileManager
через PowerShell и получаю ошибку (NullReferenceException
), но решил проблему, убедившись, что учетная запись пользователя пытается получить UserProfileManager
имел разрешения:
1) Как администратор с полным контролем
2) разрешения на подключение как полный контроль
После этого у вас будет доступ к диспетчеру соединений и вы сможете программно получить доступ к соединениям.
Другие советы
В дополнение к администратору и разрешению на UPSA, мне нужно было добавить пользователя SharePoint Setup в качестве db_owner на Profiledb.