Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure Active Directory Api-将用户添加到组失败_C#_Asp.net_Azure Active Directory - Fatal编程技术网

C# Azure Active Directory Api-将用户添加到组失败

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

我正在尝试通过azure AD Graph API将azure active directory上已存在的用户添加到已存在的组中:

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