C# Azure Active Directory Api-将用户添加到组失败
我正在尝试通过azure AD Graph API将azure active directory上已存在的用户添加到已存在的组中:C# Azure Active Directory Api-将用户添加到组失败,c#,asp.net,azure-active-directory,C#,Asp.net,Azure Active Directory,我正在尝试通过azure AD Graph API将azure active directory上已存在的用户添加到已存在的组中: IUser userToBeAdded1 = activeDirectoryClient.Users.Where(user => user.ObjectId == "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").ExecuteSingleAsync().Result; Group retrievedGr
IUser userToBeAdded1 = activeDirectoryClient.Users.Where(user => user.ObjectId == "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").ExecuteSingleAsync().Result;
Group retrievedGroup = new Group();
string searchString = "Development";
List<IGroup> foundGroups = null;
foundGroups = activeDirectoryClient.Groups.Where(group => group.DisplayName.StartsWith(searchString)).ExecuteAsync().Result.CurrentPage.ToList();
if (foundGroups != null && foundGroups.Count > 0)
{
retrievedGroup = foundGroups.First() as Group;
if (retrievedGroup.ObjectId != null)
{
try
{
activeDirectoryClient.Context.AddLink(retrievedGroup, "members", userToBeAdded1);
activeDirectoryClient.Context.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine("\nError assigning member to group. {0} {1}",
ex.Message, ex.InnerException != null ? ex.InnerException.Message : "");
}
}
}
尝试以下方法(未测试):
这个问题现在已在最新版本的Graph客户端库中修复。有关详细信息,请参见此处的答案:
希望这有帮助,为什么要使用ExecuteSingleAsync().Result获取用户?因为我只想添加一个用户的对象。为了证明我们可以通过编程方式将用户添加到组中。对于activeDirectoryClient.Context.Groups,我得到了:“Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper”不包含“组”的定义,并且没有接受第一个类型参数的扩展方法“组”找不到“Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper”(是否缺少using指令或程序集引用?)对于activeDirectoryClient.Context.Users,我得到:“Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper”不包含“Users”的定义,并且找不到接受类型为“Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper”的第一个参数的扩展方法“Users”(是否缺少using指令或程序集引用?)我编辑了代码。activeDirectoryClient.Users而不是activeDirectoryClient.Context.Users和activeDirectoryClient.Groups而不是activeDirectoryClient.Context.Groups。对于activeDirectoryClient.Users.FirstOrDefaultAsync,我们可以使用的编译器不接受activeDirectoryClient.Users。其中(user=>user.ObjectId==“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx-xxxxxxxxxxxx”)。FirstOrDefaultAsync()和相同的组,无论以何种方式,它都会给出相同的错误。
activeDirectoryClient.Context.AddLink(retrievedGroup, "members", userToBeAdded1);
var userToBeAdded1 = activeDirectoryClient.Users
.FirstOrDefaultAsync(user => user.ObjectId == "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
var searchString = "Development";
var foundGroup = activeDirectoryClient.Groups
.FirstOrDefaultAsync(group => group.DisplayName.StartsWith(searchString));
if (foundGroup != null && foundGroup.ObjectId != null)
{
try
{
activeDirectoryClient.Context.AddLink(retrievedGroup, "members", userToBeAdded1);
activeDirectoryClient.Context.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine("\nError assigning member to group. {0} {1}", ex.Message, ex.InnerException != null ? ex.InnerException.Message : "");
}
}