Domanda

Sto sviluppando un gestore di eventi per ripulire i RolesAssignments del nuovo elemento di una raccolta documenti in MOSS. Ho & # 8217; ho cercato un metodo in grado di pulire in modo efficiente tutti i RolesAssignments, anche se il modo migliore in cui ho trovato le cuciture per passare in rassegna i RolesAssignments ed eliminarlo uno per uno? C'è un altro modo per pulire tutti i RolesAssignments per un articolo?

Il codice I & # 8217; m che utilizzo per la pulizia di RolesAssignments è simile al seguente:

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

Qualcuno ha qualche idea su come gestirlo?

È stato utile?

Soluzione 2

Ho la risposta, metto la proprietà SPListItem.BreakRoleInheritance (false) per interrompere l'eredità del ruolo e rimuovere le assegnazioni di ruolo.

Altri suggerimenti

L'esempio che hai fornito nel corpo della tua domanda è il modo più corretto per farlo. ResetRoleInheritance e BreakRoleInheritance possono fare ciò di cui hai bisogno, ma questo è l'effetto collaterale delle operazioni che eseguono. Il loro scopo non è rimuovere i RoleAssignments, ma piuttosto operare sull'ereditarietà dei ruoli. Da MSDN:

ResetRoleInheritance - " Rimuove le assegnazioni di ruolo locali e ripristina le assegnazioni di ruoli dall'oggetto padre. "

BreakRoleInheritance - " Crea assegnazioni di ruoli univoche per l'elemento anziché ereditarle da un genitore. "

Se l'ereditarietà dei ruoli è già stata interrotta e si stanno utilizzando assegnazioni di ruoli specifiche, è necessario rimuoverle utilizzando un ciclo come nella propria domanda.

Che ne dici di ResetRoleInheritance? Questo dovrebbe cancellare tutti i RoleAssignments.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top