不仅使用C#中的DirSync返回更改的值

时间:2017-01-11 12:09:51

标签: c# active-directory ldap synchronization

我使用带有cookie的System.DirectoryServices.Protocols.DirSyncRequestControl来仅同步自上次从Active Directory同步到SQL数据库以来已更改的对象。在第一次同步(cookie为null)时,everythings工作正常,但在稍后的diff-sync上,搜索只返回对象的已更改属性,而不是我要求的整个属性列表。

SearchRequest Request = new SearchRequest(RootDSE.Properties["defaultNamingContext"].Value.ToString(), "(|(objectClass=user)(objectClass=group)(objectClass=contact))", System.DirectoryServices.Protocols.SearchScope.Subtree, propertiesToLoad);
                    DirSyncRequestControl DirSyncRC = new DirSyncRequestControl(cookie, System.DirectoryServices.Protocols.DirectorySynchronizationOptions.None, Int32.MaxValue);
                    Request.Controls.Add(DirSyncRC);

                    SearchResponse SearchResponse = (SearchResponse)Connection.SendRequest(Request);

                    foreach (SearchResultEntry Entry in SearchResponse.Entries)
                    {
    ...
    }

我认为将DirectorySynchronizationOptions设置为None会有效,但遗憾的是它没有。

即使其中一个属性发生变化,有没有办法总是返回一整套定义属性?

提前致谢

1 个答案:

答案 0 :(得分:1)

目录同步控件将仅返回已更改的属性。要获得其他用户属性,您有2个选项: 1.进行其他LDAP查询以检索所需的属性。 2.使用基于usn的变更跟踪技术