首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroupPrincipal.FindByIdentity未获取最新的AD组

GroupPrincipal.FindByIdentity未获取最新的AD组
EN

Stack Overflow用户
提问于 2018-07-10 14:37:37
回答 1查看 106关注 0票数 1

我遇到的问题是,新添加的AD组似乎不能立即通过GroupPrincipal.FindByIdentity()方法进行搜索。

下面是我用来添加组的代码。

代码语言:javascript
复制
// to add a new AD group
using (var group = new GroupPrincipal(context, groupName))
{
   group.GroupScope = GroupScope.Universal;
   group.Save();
}

我想在这里提到的一件事是,PrincipalContext对象context只在AD服务类的构造函数中创建一次,并且我在整个服务类的生命周期中都在重用相同的context对象。不确定这是否会在这里导致任何潜在的问题。

那么,在添加新组之后,我可以做些什么来立即获得最新的AD组呢?

EN

回答 1

Stack Overflow用户

发布于 2018-07-10 16:15:32

我可以通过在底层目录条目上添加一个CommitChanges来实现这一点。

代码语言:javascript
复制
public static void Test()
{
    var context = PrincipalContextProvider.ProvideContext();

    for (int i = 0; i < 10; i++)
    {
        using (var group = new GroupPrincipal(context, $"Hello_World_{i}"))
        {
            group.GroupScope = GroupScope.Universal;
            group.Save();
            ((DirectoryEntry)group.GetUnderlyingObject()).CommitChanges();
        }

        var _group = GetGroup($"CN=Hello_World_{i},CN=Users,DC=abc,DC=com");
        Console.WriteLine(_group.Name);
    }
}

解释: PrincipalContextProvider只是提供了您在代码中使用的上下文。CommitChanges方法将对目录项所做的更改保存到基础目录存储区。您还需要使用Save方法!至少,GetGroups方法根据组的LDAP路径查询该组(它使用了一个新的主体上下文,我不确定它是否有什么不同)。希望它能帮助你继续前进。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51258634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档