Pregunta

He estado desarrollando un controlador de eventos para limpiar las Asignaciones de Roles del nuevo elemento de una biblioteca de documentos en MOSS. & # 8217; he buscado un método que pueda limpiar todas las Asignaciones de Roles de manera eficiente, aunque la mejor forma en que encontré que las costuras se repiten en las Asignaciones de Roles y se eliminan una por una. ¿Hay otra forma de limpiar todas las Asignaciones de roles para un elemento?

El código que & # 8217; estoy usando para limpiar los RolesAssignments se ve así:

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

¿Alguien tiene alguna idea sobre cómo lidiar con esto?

¿Fue útil?

Solución 2

Tengo la respuesta, coloque la propiedad SPListItem.BreakRoleInheritance (false) para romper la herencia de roles y eliminar las asignaciones de roles.

Otros consejos

El ejemplo que ha dado dentro del cuerpo de su pregunta es la forma más correcta de hacerlo. ResetRoleInheritance y BreakRoleInheritance pueden hacer lo que necesita, pero este es el efecto secundario de las operaciones que realizan. Su propósito no es eliminar RoleAssignments, sino más bien operar con herencia de roles. Desde MSDN:

ResetRoleInheritance - " Elimina las asignaciones de roles locales y vuelve a las asignaciones de roles del objeto primario. "

BreakRoleInheritance - " Crea asignaciones de roles únicas para el elemento en lugar de heredarlas de un padre. "

Si la herencia de roles ya está rota y está utilizando asignaciones de roles específicos, debe eliminarlos utilizando un bucle como lo hizo en su pregunta.

¿Qué tal ResetRoleInheritance? Esto debería eliminar todos los RoleAssignments.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top