2014-12-30 75 views

回答

12

我找到了解決辦法。也許這將有助於:

public void RemoveUserFromGroup(Group group, User user) 
    { 
      var internalGroup = _activeDirectoryClient.Context.CreateQuery<GraphClient.Internal.Group>("groups/" + group.ObjectId).ToList().First(); 

      var internalUser = _activeDirectoryClient.Context.CreateQuery<GraphClient.Internal.User>("users/" + user.ObjectId).ToList().First(); 

      _activeDirectoryClient.Context.DeleteLink(internalGroup, "members", internalUser); 
      _activeDirectoryClient.Context.SaveChanges();   
    } 
+1

嘗試了前兩種方法,一種在庫中,另一種在Microsoft網頁上提供api調用。兩者都沒有工作。上面的例子完美運行,謝謝Tomas! – Mario

+0

爲有超過20名成員的小組工作 – Canela

3

我遇到了類似的問題,並能夠診斷它。我相信這個問題取決於如何檢索這個小組 - 是否包括小組的成員;您可以使用。展開()子句爲此。

例如,以下確實工作:

group = (Group)(await _activeDirectoryClient.Groups.Where(g => g.ObjectId == groupId).Expand(g => g.Members).ExecuteSingleAsync()); 
user = (User)(await _activeDirectoryClient.Users.Where(u => u.ObjectId == userId).ExecuteSingleAsync()); 

group.Members.Remove(user); 
await group.UpdateAsync(); 

但是請注意,該.Expand()操作在大多數情況下限制在20點的對象,因此,從托馬什溶液是現在可能更安全。