Очистка ролей документов в библиотеке документов

StackOverflow https://stackoverflow.com/questions/352980

Вопрос

Я разрабатываю обработчик событий для очистки назначений ролей нового элемента библиотеки документов в MOSS.Я искал метод, который мог бы эффективно очистить все RolesAssignments, но лучший способ, который я нашел, — это циклически перебирать RolesAssignments и удалять их один за другим?Есть ли другой способ очистить все назначения ролей для элемента?

Код, который я использую для очистки RolesAssignments, выглядит следующим образом:

    for (int i = ListItem.RoleAssignments.Count - 1; i >= 0; --i)
    { 
        ListItem.RoleAssignments.Remove(i); 
    }

Есть ли у кого-нибудь идеи, как с этим справиться?

Это было полезно?

Решение 2

У меня есть ответ: поместите свойство SPListItem.BreakRoleInheritance(false), чтобы разорвать наследование ролей и удалить назначения ролей.

Другие советы

Пример, который вы привели в тексте вашего вопроса, является наиболее правильным способом сделать это.ResetRoleInheritance и BreakRoleInheritance могут делать то, что вам нужно, но это побочный эффект выполняемых ими операций.Их цель — не удалить RoleAssignments, а скорее работать с наследованием ролей.Из MSDN:

СбросРолеНаследование - «Удаляет локальные назначения ролей и возвращается к назначениям ролей из родительского объекта».

ПерерывРольНаследование - «Создает уникальные назначения ролей для элемента, а не наследует их от родителя».

Если наследование ролей уже нарушено и вы используете определенные назначения ролей, вам следует удалить их с помощью цикла, как в вашем вопросе.

Как насчет ResetRoleInheritance?Это должно очистить все назначения ролей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top