Как программно установить пользователя в качестве администратора семейства сайтов в SharePoint

Я работаю над сайтом SharePoint 2013. Я пытаюсь назначить пользователя администратором семейства сайтов, используя следующий код:

public void SetUserSiteCollectionAdmin(string siteUrl, string strUserName, string strEmail, string fullName)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite site = new SPSite(siteUrl))
                    {
                       using (SPWeb web = site.RootWeb)
                         {
                           web.AllowUnsafeUpdates = true;
                           web.AllUsers.Add(strUserName, strEmail, fullName, null);
                           SPUser spUser = web.SiteUsers[strUserName];

                           spUser.IsSiteAdmin = true;

                           spUser.Update();

                           web.AllowUnsafeUpdates = false;
                         }
                    }
            });
}

Когда я захожу в "Параметры сайта" на своем сайте SharePoint 2013 и открываю список "Администраторы семейства сайтов", я вижу этого пользователя в списке администраторов семейства сайтов.

Все вроде хорошо. Теперь, когда я открываю этот сайт под тем же именем пользователя (который только что добавил этот список администраторов семейства сайтов), я получаю сообщение:

Извините, этот сайт не был предоставлен вам.

Что еще нужно сделать, кроме как сделать пользователя "Администратором семейства сайтов" другими настройками, которые мне здесь не хватает?

1 ответ

Я подозреваю, что это может быть связано с тем, как идентификационные данные пользователей хранятся в базе данных контента SharePoint. Вы пытались изучить существующих пользователей, чтобы точно узнать, что хранится в свойстве username?

Эта страница в моем блоге может быть или не быть связанной, но она описывает, как пользователи на основе форм довольно странно хранились в объектной модели SharePoint...

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