Добавление новых пользователей и назначение разрешений для папки SharePoint с помощью C# (Microsoft.SharePoint.Client)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Добавление новых пользователей и назначение разрешений для папки SharePoint с помощью C# (Microsoft.SharePoint.Client)

Сообщение Anonymous »

Я разрабатываю инструмент на C#, используя библиотеку Microsoft.SharePoint.Client для взаимодействия с SharePoint. Моя цель — добавить нового пользователя в папку SharePoint и программно назначить ему определенные разрешения.
Проблема:
Когда я пытаюсь добавить пользователя через пользовательский интерфейс SharePoint с помощью функции «Поделиться», все работает отлично — электронное письмо приглашается как новый пользователь. Однако, когда я пытаюсь сделать то же самое с помощью кода, я получаю следующие ошибки:
  • "Пользователь не существует"
    < li>"Пользователь с адресом электронной почты не существует"
    Похоже, что SharePoint не распознает адрес электронной почты при использовании кода. В идеале я хотел бы «пригласить» нового пользователя с помощью кода и впоследствии назначить ему определенные разрешения. Ниже приведен код, который я сейчас использую:

Код: Выделить всё

// Loading the folder by URL
Folder AccountFolder = AVIFolder.Folders.GetByUrl(Uri.EscapeDataString(FolderName));
Client.Load(AccountFolder);
Client.ExecuteQuery();

// Loading folder properties
ListItem AllFields = AccountFolder.ListItemAllFields;
Client.Load(AllFields);
Client.ExecuteQuery();

// Creating the new user
UserCreationInformation newUser = new UserCreationInformation
{
LoginName = EMail,   // Using the email as LoginName
Email = EMail,
Title = "New User"
};
User user = Client.Web.SiteUsers.Add(newUser);
Client.Load(user);
Client.ExecuteQuery();

// Ensuring the user exists on the site (throws error if not)
Principal AccountUser = Client.Web.EnsureUser(EMail);
Client.Load(AccountUser);
Client.ExecuteQuery();

// Assigning specific permissions to the folder for the user
RoleAssignmentCollection RoleAssignments = AllFields.RoleAssignments;
Client.Load(RoleAssignments);
Client.ExecuteQuery();

RoleDefinitionBindingCollection collRDB = new RoleDefinitionBindingCollection(Client);
RoleDefinition ContributeRoleDef = Client.Web.RoleDefinitions.GetByType(RoleType.Editor);
collRDB.Add(ContributeRoleDef);

// Breaking role inheritance and adding role assignments
AllFields.BreakRoleInheritance(false, true);
RoleAssignments.Add(AccountUser, collRDB);
AccountFolder.Update();
Client.ExecuteQuery();
Что я пробовал:
  • Использование Client.Web.EnsureUser(EMail ), чтобы убедиться, что пользователь существует, но здесь я сталкиваюсь с ошибкой «Пользователь не существует».
    Я проверил, что электронная почта работает нормально при приглашении через пользовательский интерфейс.< /li>
Вопрос. Есть ли способ программно пригласить нового пользователя по электронной почте в SharePoint и предоставить ему определенные разрешения? Или мне нужно убедиться, что пользователь уже существует на сайте SharePoint, прежде чем назначать разрешения?
Любая помощь или идеи о том, как исправить или улучшить этот подход, будут оценены по достоинству!
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/790 ... th-c-sharp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»