【问题标题】:Azure Active Directory Graph Client 2.0 - Context is not currently tracking the entityAzure Active Directory Graph Client 2.0 - 上下文当前未跟踪实体
【发布时间】:2015-10-20 09:47:32
【问题描述】:

我最近安装了 Azure Active Directory Graph 客户端库 2.0.2 Nuget 包,无法将成员添加到组中,无论是向组中添加组还是向组中添加用户时,我都收到以下错误 AddLink函数被调用:

“[System.InvalidOperationException] = {"上下文当前没有跟踪实体。"}

我的代码:

IGroup group = azureClient.Groups.GetByObjectId("Guid here").ExecuteAsync().Result;
IGroup groupToAdd = azureClient.Groups.GetByObjectId("Guid here").ExecuteAsync().Result;
azureClient.Context.AddLink(group, "Members", groupToAdd);
azureClient.Context.SaveChanges();

在进行 Google 搜索时,我无法找到与 Azure Active Directory Graph 客户端库相关的任何提及此错误的信息,因此我们将不胜感激。

【问题讨论】:

    标签: c# .net-4.5 azure-active-directory


    【解决方案1】:

    我们刚刚发布了 Graph 客户端库的更新,修复了这个问题。 您现在应该能够将成员添加到组。该机制与使用 AddLinks 略有不同(希望更简单)。

    我们还有一个描述客户端库的新博客,其中讨论了这个和许多其他事情:http://blogs.msdn.com/b/aadgraphteam/archive/2014/12/12/announcing-azure-ad-graph-api-client-library-2-0.aspx

    作为参考,将成员添加到组:

    {groupObject}.Members.Add({entityObject} as DirectoryObject);

    例如,用新用户成员更新组:

    myGroup.Members.Add(userToBeAdded as DirectoryObject); 等待 myGroup.UpdateAsync();

    注意:可以使用相同的构造将用户添加到 DirectoryRole 对象。可以将组和用户添加到组中,但是,目前,只能将用户添加到 DirectoryRole。

    希望对你有帮助,

    【讨论】:

    • 我尝试在博客中做同样的事情。但它失败并显示以下错误:上下文已经在跟踪实体,您可以在我的这个问题中看到代码:stackoverflow.com/questions/34964513/…
    【解决方案2】:

    我遇到了同样的问题,文档不是很清楚,所以也许这对其他人有帮助。您不能将用户添加为IGroup 的成员,而只能添加到Group。您也不能将IDirectoryObjects 添加到Members 集合中,而只能添加DirectoryObjects。您必须首先转换您的 IUserIGroup 对象。以下代码是我目前正在使用的代码:

    var graphClient = new ActiveDirectoryClient(new Uri(ConfigHelper.GraphServiceRoot), async () => await GetUserTokenAsync(cache));
    var actualUser = await graphClient.Users.GetByObjectId(matchedUser.ObjectId).ExecuteAsync();
    var actualGroup = (Group) await graphClient.Groups.GetByObjectId(matchedGroup.ObjectId).ExecuteAsync();
    
    actualGroup.Members.Add(actualUser as DirectoryObject);
    await graphClient.Context.SaveChangesAsync();
    

    【讨论】:

      【解决方案3】:

      我尝试了这种新语法,但还是不行。

       public async Task<Result<dynamic>> addUserToAzureGroup(Group AzGroup, User AzUser)
       {
           // link the found user with the found group
           try
           {
               AzGroup.Members.Add(AzUser as DirectoryObject);
               await AzGroup.UpdateAsync();
           }
           catch (Exception ex)
           {
               Exception myEx = new Exception(ex.Message);
               retResult.Exception = myEx;
               return retResult;
           }
           return retResult;
       }
      

      我在执行消息中有几乎相同的错误文本:上下文已经在跟踪关系

      关于这个问题的任何消息?谁能猜出为什么会这样?

      我也尝试了manage.windowsAzure.com UI,但仍然无法添加用户!我收到此错误:无法将成员添加到组“myAzAD_group”

      【讨论】:

      • 当时似乎整个 Azure 都被卡住了。第二天就正常工作了,没有任何变化
      • 在这种情况下,前一天你应该有旧的目录客户端库,后一天你应该更新 api nuget 包。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      相关资源
      最近更新 更多