Управление профилями пользователей SP2010 в качестве администратора профилей пользователей - PullRequest
1 голос
/ 11 августа 2011

У меня есть приемник событий SharePoint 2010, который должен обновить профиль пользователя другого пользователя на сайте, т.е. не пользователя, который вызвал событие. Я пытаюсь открыть UserProfileManager с помощью токена пользователя администратора профиля пользователя (как предложено в другой вопрос ), но по какой-то причине он все еще работает под учетной записью человека, который вызвал событие.
Как правильно выдать себя за администратора приложения-службы профилей пользователей, чтобы я мог редактировать профиль любого пользователя?

SPUserToken upmToken = web.AllUsers[@"domain\upadmin"].UserToken;//this user is a User Profile Service Application Administrator
using (SPSite upmSite = new SPSite(web.Url, upmToken))
{
    SPServiceContext context = SPServiceContext.GetContext(upmSite);
    UserProfileManager userProfileManager = new UserProfileManager(context, false);
    UserProfile userProfile = userProfileManager.GetUserProfile("anotheruser");
    userProfile["PictureUrl"].Value = pictureUrl;//System.UnauthorizedAccessException: Attempted to perform an unauthorized operation
    userProfile.Commit();
}

Если я добавлю себя к администраторам приложения-службы профилей пользователей, код будет работать нормально, поэтому он все еще пытается открыть UserProfileManager под учетной записью пользователя, который активировал получатель события.
Я не думаю, что было бы приемлемо добавить учетную запись пула приложений администраторам профилей пользователей для использования RunWithElevatedPermissions.

1 Ответ

0 голосов
/ 27 июля 2013

Вы пытались использовать токен системной учетной записи (SPUserToken.SystemAccount)? использование (SPSite mySiteSite = новый SPSite (mySiteHostUrl, SPUserToken.SystemAccount))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...