System.DirectoryServices ArgumentNull 异常中的目录同步
Directory Synchronization in System.DirectoryServices ArgumentNull Exception
我正在尝试使用 System.DirectoryServices .NET Framework class 库访问 Active Directory 域服务 (ADDS)。
使用 LDAP 协议,我想使用此 LDAP 过滤器获取所有具有办公室设置值属性的目录条目 (physicalDeliveryOfficeName=*) 然后我想将 同步 cookie 写入文件以供将来参考,就像 DirectorySynchronization msdn example article[=15 中显示的示例一样=]
这是我的代码:
using (DirectoryEntry de = new DirectoryEntry("LDAP://myDomain.com/OU=Test,DC=myDomain,DC=com"))
{
using (var ds = new DirectorySearcher(de))
{
ds.PropertiesToLoad.Add("distinguishedName");
ds.SearchScope = SearchScope.Subtree;
ds.Filter = "(physicalDeliveryOfficeName=*)";
ds.DirectorySynchronization = new DirectorySynchronization();
SearchResultCollection searchResultCollection = ds.FindAll();
foreach (SearchResult result in searchResultCollection)
{
var dn = (string)result.Properties["distinguishedName"][0];
//do Something
}
var cookie = ds.DirectorySynchronization.GetDirectorySynchronizationCookie();
File.WriteAllBytes(@"location", cookie);
}
}
每次我运行这个代码
ds.DirectorySynchronization = new DirectorySynchronization();
每当我调用 ds.FindAll() 时,我都会得到一个 System.ArgumentNullException。知道每当我注释同一行代码时,我得到一个没有问题的搜索结果。
我希望我听起来足够清楚。
出于某种原因,我发现这个领域几乎没有文档。我真的找不到解释。
DirectorySynchronization 必须分配给域根 LDAP 路径,并且不能像组织单位那样处理子目录。
using(DirectoryEntry de = new DirectoryEntry("LDAP://myDomain.com/DC=myDomain,DC=com")){
//same code
}
这将解决问题。
如果有人想跟踪 OU 等子目录中的更改,他们应该使用 USNChanged。
我正在尝试使用 System.DirectoryServices .NET Framework class 库访问 Active Directory 域服务 (ADDS)。
使用 LDAP 协议,我想使用此 LDAP 过滤器获取所有具有办公室设置值属性的目录条目 (physicalDeliveryOfficeName=*) 然后我想将 同步 cookie 写入文件以供将来参考,就像 DirectorySynchronization msdn example article[=15 中显示的示例一样=]
这是我的代码:
using (DirectoryEntry de = new DirectoryEntry("LDAP://myDomain.com/OU=Test,DC=myDomain,DC=com"))
{
using (var ds = new DirectorySearcher(de))
{
ds.PropertiesToLoad.Add("distinguishedName");
ds.SearchScope = SearchScope.Subtree;
ds.Filter = "(physicalDeliveryOfficeName=*)";
ds.DirectorySynchronization = new DirectorySynchronization();
SearchResultCollection searchResultCollection = ds.FindAll();
foreach (SearchResult result in searchResultCollection)
{
var dn = (string)result.Properties["distinguishedName"][0];
//do Something
}
var cookie = ds.DirectorySynchronization.GetDirectorySynchronizationCookie();
File.WriteAllBytes(@"location", cookie);
}
}
每次我运行这个代码
ds.DirectorySynchronization = new DirectorySynchronization();
每当我调用 ds.FindAll() 时,我都会得到一个 System.ArgumentNullException。知道每当我注释同一行代码时,我得到一个没有问题的搜索结果。
我希望我听起来足够清楚。 出于某种原因,我发现这个领域几乎没有文档。我真的找不到解释。
DirectorySynchronization 必须分配给域根 LDAP 路径,并且不能像组织单位那样处理子目录。
using(DirectoryEntry de = new DirectoryEntry("LDAP://myDomain.com/DC=myDomain,DC=com")){
//same code
}
这将解决问题。
如果有人想跟踪 OU 等子目录中的更改,他们应该使用 USNChanged。