2015-11-13 28 views
1

我无法从组中删除用户。我没有问题添加用户。我没有收到myGroup.Members.Remove(用户为DirectoryObject);的任何错误。这是一个错误吗?Azure图api客户端从组中删除成员

ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient(); 
     User user = (User)await client.Users.GetByObjectId(userID).ExecuteAsync(); 
     IGroup myIGroup = await client.Groups.GetByObjectId(objectId).ExecuteAsync(); 
     Group myGroup = (Group)myIGroup; 
     if (myGroup != null && user != null) 
     { 
      try 
      { 
       switch (myAction) 
       { 
        case "Delete":        
         myGroup.Members.Remove(user as DirectoryObject); 
         break; 
        case "Add": 
         myGroup.Members.Add(user as DirectoryObject); 
         break; 
       } 
       await myGroup.UpdateAsync(); 

回答

1

尝试添加Expand(x => x.Members)同时获得组。我试过以下:

public async Task<Result> RemoveFromGroup(string upn, string groupId) 
{ 
    try 
    { 
     var group = (AD.Group) await ADClient.Groups 
      .Where(x => x.ObjectId == groupId) 
      .Expand(x => x.Members) 
      .ExecuteSingleAsync(); 

     var user = (AD.User) await ADClient.Users 
      .Where(x => x.UserPrincipalName == upn) 
      .ExecuteSingleAsync(); 

     group.Members.Remove(user); 
     await group.UpdateAsync(); 
     return Result.Ok(); 
    } 
    catch (Exception ex) 
    { 
     return Result.Fail(new Error(ex.Message, null, ex)); 
    } 
} 

它的工作原理。唯一的区别 - 我通过其主要名称获取用户,但在这种情况下并不重要。