Как программно добавить пользователя в группу SharePoint - доступ запрещен - PullRequest
3 голосов
/ 18 июня 2010

Я пытался и пытался добавить пользователя в группу SharePoint, используя C # программно (используя не-администратора сайта). Если я вошел в систему как администратор сайта, он работает нормально ... но, если я вошел в систему как не администратор сайта, то я получаю ошибку «Отказано в доступе». Проведя некоторое исследование, я обнаружил, что мне нужно либо «выдать себя за пользователя» (который, кажется, не работает), либо «обеспечить пользователя», поэтому я оказался в этом коде (который работал для некоторых людей). Может ли какая-то помощь объяснить мне, почему следующее не работает и все еще дает мне ошибку Access is Denied?

SPSecurity.RunWithElevatedPrivileges(delegate()

{

    using (SPSite site = new SPSite(SPControl.GetContextSite(HttpContext.Current).Url)) //have also tried passing in the ID - doesn't make a difference

    {

        using (SPWeb web = site.OpenWeb())

        {

                web.AllowUnsafeUpdates = true;



                // add user to group

                SPGroup group = this.Web.Groups[groupList.Items[i].Value];

                SPUser spUser = web.EnsureUser(provider + ":" + user.UserName); //provider is previously defined

                spUser.Email = user.Email;

                spUser.Name = txtFullName.Text;

                group.AddUser(spUser);



                // update

                group.Update();

        }

    }

}

Ответы [ 2 ]

3 голосов
/ 19 июня 2010

Разобрался!Вместо this.Web.Groups это просто web.Groups ... Я не использовал нужный объект.

0 голосов
/ 11 декабря 2014

Вы установили web.AllowUnsafeUpdates = true;, но не восстановили его.

что вы можете сделать в такой ситуации, это проверить, что SPWeb уже выполняет AllowUnsafeUpdates, как это.* Таким образом вы устанавливаете ограничения обратно, как это было для его объекта SPWeb.В вашем случае я бы поместил его в блок try catch, где вы бы установили web.AllowUnsafeUpdates = updates; в операторе finally.

Если вы запустите это в своем коде, возможно, оно установлено в true, потому что вы не установили его обратно.Вы можете проверить с помощью диспетчера SharePoint или powershell, какое значение имеет этот объект SPWeb, чтобы быть уверенным.

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