[英]Directory Synchronization in System.DirectoryServices ArgumentNull Exception
我正在嘗試使用System.DirectoryServices .NET Framework類庫訪問Active Directory域服務(ADDS)。
使用LDAP協議,我想使用此LDAP過濾器(physicalDeliveryOfficeName = *)獲取所有具有office設置值屬性的DirectoryEntries,然后將同步cookie寫入文件以供將來參考,就像DirectorySynchronization msdn示例中顯示的示例一樣文章
這是我的代碼:
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.