簡體   English   中英

System.DirectoryServices ArgumentNull異常中的目錄同步

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM