LDAP / AD:创建组A并将其添加到组B失败

时间:2012-10-04 07:58:42

标签: c# active-directory ldap directoryservices active-directory-group

我正在尝试创建groupA,并将其添加到groupB。这失败了,说找不到groupA(虽然我可以验证它确实是创建的)。组的创建与搜索可以找到的点之间似乎存在延迟。这是我的代码:

//1) create groupA
using (var group = ou.Children.Add("CN=" + AdConnection.EscapeLdapString(groupAName), "group"))
{
    group.Properties["samAccountName"].Value = groupAName;
    group.CommitChanges();
}

//2) add groupA to groupB
using (var pc = new PrincipalContext(ContextType.Domain, domain.Name, domain.Username, domain.Password))
{
    using (var groupB = GroupPrincipal.FindByIdentity(pc, IdentityType.Guid, Guid))
    {
        groupB.Members.Add(pc, IdentityType.SamAccountName, groupAName); //throws a NoMatchingPrincipalException 
        groupB.Save();
    }
}

如果我把它写成两个程序,并执行第1部分,等待一段时间,然后再执行第2部分,这就行了。我可能会反复运行第2部分,直到找到A组,但我想避免这样做。有没有确定的方法来做到这一点?例如,我可以在创建groupA时指定groupA是groupB的成员吗?

1 个答案:

答案 0 :(得分:0)

通过创建具有new GroupPrincipal(pc, groupName)的groupS,保存它,然后使用相同的PrincipalContext查找组B来解决此问题。