Я пишу визуальную веб-часть в visual studio для sharepoint 2010. Смысл этой веб-части состоит в том, чтобы изменять разрешения одним нажатием кнопки.Я могу получить доступ к разрешениям и вывести их на экран.Я могу изменить разрешения для объектов, которые у меня есть, а затем показать измененные разрешения на экране.Моя проблема в том, что после того, как все сделано, никакие фактические разрешения не были изменены.
webpart.TargetLibrary - текстовое поле, введенное в другом месте как имя библиотеки, которую я хочу исследовать.
SPListCollection docLibs = m_SharePointWeb.GetListsOfType(SPBaseType.DocumentLibrary);
SPDocumentLibrary targetLib = (SPDocumentLibrary)(docLibs[webPart.TargetLibrary]);
SPListItemCollection libFolders = targetLib.Folders;
SPListItem folderItem = libFolders[0];
SPRoleAssignmentCollection folderRoles = folderItem.RoleAssignments;
SPRoleAssignment roleAssign = folderRoles[0];
SPRoleDefinitionBindingCollection spRDBC = roleAssign.RoleDefinitionBindings;
SPRoleDefinition Contribute = spRDBC[0].ParentWeb.RoleDefinitions["Contribute"];
folderItem.RoleAssignments[0].RoleDefinitionBindings.Add(Contribute);
folderItem.Update();
Это несколько упрощенная версия - в оригинале были циклы for и различные фрагменты кода, выполняющие другие операцииНезависимо от всего, что я смог собрать воедино, просматривая онлайн, этот код должен добавить "Contribute" privs к первой роли в списке в первой папке.Как я уже говорил, это относится к местным объектам, но не имеет постоянного эффекта.Вызов Update (), кажется, ничего не делает, и я не уверен, что он должен быть там в этом случае.Я попытался UpdateOverwriteVersion () - это тоже ничего не делает.Буду признателен за любые предположения о том, что я могу делать неправильно.
В качестве примечания, это не такая уж большая проблема, но я не могу избавиться от ощущения, что есть более эффективный и простой способполучить веб-объект, чтобы я мог получить определения роли по имени.Любые советы по этому вопросу также будут оценены.
Редактировать: решение перенесено, чтобы ответить, ниже.