1

我正在尝试创建组A并将其添加到组B.这失败了,说groupA无法找到(尽管我可以验证它确实是创建的)。在创建小组和创建小组之间似乎有一段延迟,并且可以通过搜索找到它。这里是我的代码:LDAP/AD:创建组A并将其添加到组B失败

//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的成员吗?

回答

0

通过使用new GroupPrincipal(pc, groupName)创建groupA解决此问题,保存它,然后使用相同的PrincipalContext查找groupB。

相关问题