sharepoint listitem权限不会持久化

时间:2011-06-03 11:16:17

标签: c# sharepoint-2010

努力设置listitem的权限......一切似乎都运行正常..没有错误..但是当检查sharepoint上的文档时...我没有设置我添加的权限组。

知道我错过了什么吗?

sharepoint dev是一场真正的噩梦!

public void SetDocumentPermission(ListItem doc, List<Group> newGroup)
    {
        using (var clientContext = GetNewContext())
        {
            var rdb = new RoleDefinitionBindingCollection(clientContext);
            var rootWeb = clientContext.Web;
            clientContext.Load(rootWeb);
            clientContext.ExecuteQuery();

            foreach (var group in newGroup)
            {
                try
                {
                    var usr = (Principal)group;
                    var roll = rootWeb.RoleDefinitions.GetByType(RoleType.Reader);

                    clientContext.Load(roll);
                    clientContext.ExecuteQuery();

                    rdb.Add(roll);

                    if (!doc.HasUniqueRoleAssignments)
                    {
                        doc.BreakRoleInheritance(true, true);
                    }

                    doc.RoleAssignments.Add(usr, rdb);

                    doc.Update();

                    clientContext.ExecuteQuery();   
                }
                catch (Exception exception)
                {
                    throw new ApplicationException(exception.Message);
                }

            }

        }
    }

感谢

1 个答案:

答案 0 :(得分:0)

好吧我通过在类级别而不是方法上设置客户端上下文来解决此问题。 我不确定在listitem和ctx之间是否存在某种绑定..但是当我从另一个方法(也在ctx周围使用)返回listitem并将其传递给此权限方法时... listitem似乎失去了它的联系。