c# Active Directory Services findAll() returns only 1000 entries [duplicate]

There are two ways around this limitation – see the MSDN docs on DirectorySearcher for details:

  • set the DirectorySearcher.SizeLimit property to some value you need – this will return that given number of entries in a single search; however, you cannot get more than the server limit (default: 1’000 entries) back in a single operation – however, that server limitation is a configurable option – you could set it higher, and then set your directory searcher’s size limit higher – but the more entries you want to return at once, the longer your call will take!

  • set the DirectorySearcher.PageSize to some value, e.g. 250 or so, to do “paged searches”, e.g. you get back 250 entries in a single operation, and if you iterate to the 251st entry, the directory searcher goes back (in a second, third, fourth call) to get another 250 entries. This is typically the better option since you get back that number of entries quickly, but you can keep searching for more entries as needed

The preferred way to handle situations where you need more than those 1000 entries is definitely paged searches – see the MSDN docs:

After the server has found the number
of objects that are specified by the
PageSize property, it will stop
searching and return the results to
the client. When the client requests
more data, the server will restart the
search where it left off.

Leave a Comment