1

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();
    }
}

これを2つのプログラムとして記述し、パート1を実行し、しばらく待ってからパート2を実行すると、これは機能します。グループAが見つかるまでパート2を繰り返し実行することもできますが、それは避けたいと思います。これを行うための決定論的な方法はありますか?たとえば、groupAを作成するときにgroupAがgroupBのメンバーであることを指定できますか?

4

1 に答える 1

0

で groupA を作成してnew GroupPrincipal(pc, groupName)保存し、同じ PrincipalContext を使用して groupB を探すことで、これを解決しました。

于 2012-10-04T08:55:32.380 に答える