Профиль пользователя SharePoint из основного имени пользователя в среде утверждений

У меня есть учетная запись, которая была сохранена в базе данных в формате имени участника-пользователя (UPN): jdoe@domain.gobalx.com

Я работаю в среде SharePoint, которая проверяет подлинность утверждений в формате UPN.

Моя проблема в том, что мне нужно получить объект UserProfile для постоянной учетной записи UPN. Я пробовал следующее, но это не работает:

string upnAccount = "jdoe@domain.globalx.com";
SPServiceContext ctx = SPServiceContext.GetContext(SPContext.Current.Site);
UserProfileManager upm = new UserProfileManager(ctx);
UserProfile user = upm.GetUserProfile(upnAccount);

Я продолжаю получать: Microsoft.Office.Server.UserProfiles.UserNotFoundException: при получении профиля пользователя произошла ошибка

Означает ли это, что мне нужно преобразовать учетную запись UPN в претензию, и если да, то есть ли у кого-нибудь пример, как это сделать?

2 ответа

            UserProfileManager UPM = null;

            using (SPSite site = new SPSite(SPContext.Current.Web.Url))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    ServerContext serverContext = ServerContext.GetContext(site);
                    UPM = new UserProfileManager(serverContext);
                     foreach (UserProfile profile in UPM)
                    {

                        an = profile["AccountName"].Value;
                        title = profile["Title"].Value;
                    }
                }
            }

Вы можете попробовать это для получения всех пользовательских профилей. В цикле foreach вы можете проверить свои поля и получить специфические данные пользователя.

В некоторых случаях на сайтах SharePoint с федеративной проверкой подлинности профили пользователей не создаются автоматически, пока не настроена синхронизация. Для этой проблемы вы можете проверить, существует ли уже профиль пользователя для jdoe@domain.globalx.com через Central Admin.

Также ваш код должен выполняться под олицетворением, проверьте журнал на наличие исключений и попробуйте использовать SPSecurity.RunWithElevatedPrivileges.

Другие вопросы по тегам