Question

J'ai développé un gestionnaire d'événements pour nettoyer les nouveaux rôles d'une bibliothèque de documents dans MOSS. J'ai & # 8217; recherché une méthode qui permettrait de nettoyer efficacement toutes les tâches RolesAssign, bien que la meilleure façon pour moi de trouver que les coutures fassent une boucle entre les tâches RolesAssignments et soient supprimées une par une? Y a-t-il un autre moyen de nettoyer tous les RolesAssignments pour un élément?

Le code que je & # 8217; utilise pour nettoyer les attributions de rôles se présente comme suit:

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

Quelqu'un a-t-il des idées sur la manière de gérer cela?

Était-ce utile?

La solution 2

J'ai la réponse, mettez la propriété SPListItem.BreakRoleInheritance (false) pour casser l'héritage du rôle et supprimer les attributions de rôle.

Autres conseils

L'exemple que vous avez donné dans le corps de votre question est la manière la plus correcte de le faire. ResetRoleInheritance et BreakRoleInheritance peuvent faire ce dont vous avez besoin, mais c'est l'effet secondaire des opérations qu'elles effectuent. Leur but n'est pas de supprimer des attributions de rôle, mais d'opérer sur l'héritage de rôle. À partir de MSDN:

ResetRoleInheritance - & "Supprime les attributions de rôles locaux et rétablit les attributions de rôles de l'objet parent. "

BreakRoleInheritance - & "Crée des attributions de rôles uniques pour l'élément plutôt que de les hériter d'un parent. "

Si l'héritage de rôle est déjà rompu et que vous utilisez des attributions de rôle spécifiques, vous devez les supprimer en utilisant une boucle comme dans votre question.

Qu'en est-il de ResetRoleInheritance? Cela devrait effacer toutes les attributions de rôle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top