2017-07-26 21 views
0

我使用PrincipalSearcherDirectorySearcher過濾用戶並指定要抓取的屬性。在兩個不同的網絡上進行測試。一個網絡有8K +記錄,另一個網絡有135K +。在135K +網絡上,它無法將記錄保存到數據庫。所以我想用一些記錄來做一個測試,但是它在我嘗試過的幾百條記錄上並沒有失敗。所以我試着把它增加到一千。但是當我這樣做的時候,它給了我一切,而不是我要求的一千個。如果SizeLimit爲256或以上,DirectorySearcher不尊重SizeLimit屬性

以下是我正在做的:

using (PrincipalSearcher searcher = new PrincipalSearcher(new UserPrincipal(context))) 
{ 
    DirectorySearcher directorySearcher = searcher.GetUnderlyingSearcher() as DirectorySearcher; 
    directorySearcher.Filter = "(&(objectSid=*)(sn=*)(givenName=*)(objectGuid=*))"; 
    directorySearcher.PropertiesToLoad.Add("ObjectGUID"); 
    directorySearcher.PropertiesToLoad.Add("objectSid"); 
    directorySearcher.PropertiesToLoad.Add("GivenName"); 
    directorySearcher.PropertiesToLoad.Add("sn"); 
    directorySearcher.PropertiesToLoad.Add("mail"); 
    directorySearcher.PropertiesToLoad.Add("telephoneNumber"); 
    directorySearcher.PropertiesToLoad.Add("sAMAccountName"); 
    directorySearcher.PropertiesToLoad.Add("distinguishedName"); 
    directorySearcher.PropertiesToLoad.Add("title"); 
    directorySearcher.PropertiesToLoad.Add("department"); 
    directorySearcher.PropertiesToLoad.Add("company"); 
    directorySearcher.PropertiesToLoad.Add("manager"); 
    directorySearcher.PropertiesToLoad.Add("PhysicalDeliveryOfficeName"); 
    directorySearcher.PropertiesToLoad.Add("countryCode"); 
    directorySearcher.SizeLimit = 255; 

注意這裏的大小限制爲255。如果我指定256下的值,將返回的記錄,我我指定的數量。在小型網絡上的行動是簡單的例子:

enter image description here

如果我告訴它給我255個記錄,它給了我255個記錄。但是,如果我告訴它給我256或更高,它想給我所有的人。

enter image description here

在這裏發生了什麼任何想法?

回答

0

問題是DirectorySearcher對象上的PageSize屬性。當非默認值設置爲SizeLimit屬性時,似乎頁面大小受到限制。我將PageSize屬性設置爲4000,並且我在SizeLimit中放入的任何值都拉出了確切的數字。

相關問題