我使用带有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会有效,但遗憾的是它没有。
即使其中一个属性发生变化,有没有办法总是返回一整套定义属性?
提前致谢
答案 0 :(得分:1)
目录同步控件将仅返回已更改的属性。要获得其他用户属性,您有2个选项: 1.进行其他LDAP查询以检索所需的属性。 2.使用基于usn的变更跟踪技术