2

我一直在开发一个事件处理程序来清理 MOSS 中文档库的新项目的 RolesAssignments。我已经搜索了一种可以有效清理所有 RolesAssignments 的方法,尽管我发现接缝循环通过 RolesAssignments 并逐个删除的最佳方法是什么?是否有另一种方法来清理项目的所有 RolesAssignments?

我用于清理 RolesAssignments 的代码如下所示:

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

有没有人对如何处理这个有任何想法?

4

3 回答 3

2

您在问题正文中给出的示例是执行此操作的最正确方法。ResetRoleInheritance 和 BreakRoleInheritance 可能会满足您的需求,但这是它们执行的操作的副作用。它们的目的不是删除 RoleAssignments,而是对角色继承进行操作。来自 MSDN:

ResetRoleInheritance - “删除本地角色分配并从父对象恢复为角色分配。”

BreakRoleInheritance - “为项目创建独特的角色分配,而不是从父级继承它们。”

如果角色继承已经被破坏并且您正在使用特定的角色分配,您应该像您在问题中那样使用循环删除它们。

于 2008-12-09T19:04:48.800 回答
1

我有答案,把属性 SPListItem.BreakRoleInheritance(false) 打破角色继承并删除角色分配。

于 2008-12-09T17:51:40.523 回答
-1

ResetRoleInheritance 怎么样?这应该清除所有 RoleAssignments。

于 2008-12-09T16:02:58.933 回答