Чистые роли документов в библиотеке документов - PullRequest
2 голосов
/ 09 декабря 2008

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 09 декабря 2008

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

ResetRoleInheritance - "Удаляет назначения локальной роли и возвращает назначения роли из родительского объекта."

BreakRoleInheritance - "Создает уникальные назначения ролей для элемента, а не наследует их от родителя."

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

1 голос
/ 09 декабря 2008

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

0 голосов
/ 09 декабря 2008

Как насчет ResetRoleInheritance? Это должно очистить все RoleAssignments.

...