Проблема:
Когда я пытаюсь добавить пользователя через пользовательский интерфейс 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>
Любая помощь или идеи о том, как исправить или улучшить этот подход, будут оценены по достоинству!
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/790 ... th-c-sharp