2011-06-03 107 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似乎失去了它的聯繫。