我一直在开发一个事件处理程序来清理MOSS中文档库的新项目的RolesAssignments。我已经搜索了一种可以有效清理所有RolesAssignments的方法,虽然我发现接缝的最佳方式是循环遍历RolesAssignments并逐个删除?是否有其他方法可以清除项目的所有RolesAssignments?
我用来清理RolesAssignments的代码如下所示:
for (int i = ListItem.RoleAssignments.Count - 1; i >= 0; --i)
{
ListItem.RoleAssignments.Remove(i);
}
有没有人对如何处理这个有任何想法?
答案 0 :(得分:2)
您在问题正文中提供的示例是最正确的方法。 ResetRoleInheritance和BreakRoleInheritance可以做你需要的,但这是他们执行的操作的副作用。它们的目的不是删除RoleAssignments,而是操作角色继承。来自MSDN:
ResetRoleInheritance - “删除本地角色分配并从父对象恢复为角色分配。”
BreakRoleInheritance - “为项目创建唯一的角色分配,而不是从父级继承它们。”
如果角色继承已经中断并且您正在使用特定的角色分配,则应该使用循环删除它们,就像您在问题中一样。
答案 1 :(得分:1)
我有答案,把属性SPListItem.BreakRoleInheritance(false)打破角色继承并删除角色分配。
答案 2 :(得分:-1)
ResetRoleInheritance怎么样?这应该清除所有RoleAssignments。