Pergunta

Eu tenho vindo a desenvolver um manipulador de eventos para limpar as RolesAssignments do novo item de uma biblioteca de documentos no MOSS. Eu procurei por um método que pudesse limpar todos os RolesAssignments eficiente, embora a melhor maneira que eu encontrei costuras para ser percorrer os RolesAssignments e uma exclusão por um? Existe outra maneira de limpar todas as RolesAssignments para um item?

O código que estou usando para limpar as RolesAssignments parecido com este:

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

Alguém tem alguma idéia de como lidar com isso?

Foi útil?

Solução 2

Eu tenho a resposta, coloque o SPListItem.BreakRoleInheritance propertie (false) para quebrar a herança papel e remover as atribuições de função.

Outras dicas

O exemplo que você deu dentro do corpo da sua pergunta é a maneira mais correta de fazer isso. ResetRoleInheritance e BreakRoleInheritance pode fazer o que você precisa, mas isso é o efeito colateral das operações que executam. Seu propósito não é RoleAssignments remover, mas sim operar em herança papel. De MSDN:

ResetRoleInheritance - "Remove o atribuições de função locais e reverte para atribuições de função do objeto pai. "

BreakRoleInheritance - "Cria única atribuições de função para o item em vez de herdar-los de um pai ".

Se a herança papel já está quebrado e você estiver usando atribuições de função específica, você deve removê-los usando um loop que você tem na sua pergunta.

Como cerca ResetRoleInheritance? Isso deve limpar todos os RoleAssignments.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top