2011-06-03 109 views
0

努力设置listitem上的权限......一切似乎正常工作..没有错误..但是当检查SharePoint上的文档..权限组即时添加没有设置。sharepoint listitem权限不会持续

任何想法我失踪了?

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); 
       } 

      } 

     } 
    } 

感谢

回答

0

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