我正在尝试进行LDAP搜索但是我一直收到以下错误:
Unhandled Exception: System.Runtime.InteropServices.COMException (0x80072024): T
he administrative limit for this request was exceeded.
at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.MoveNext
()
at System.DirectoryServices.DirectorySearcher.FindOne()
以下是代码:(在FindOne()中抛出错误)
DirectoryEntry dirEntry = new DirectoryEntry("LDAP://myldap.com:1701/ou=People,o=My Company,c=CA", "", "", AuthenticationTypes.Anonymous);
DirectorySearcher dirSearcher = new DirectorySearcher(dirEntry);
string filter = "mail";
string filterValue = "my.email@mycompany.com";
dirSearcher.Filter = string.Format("({0}={1})", filter, filterValue);
SortOption sortOption = new SortOption(filter, SortDirection.Ascending);
dirSearcher.Sort = sortOption;
dirSearcher.PropertiesToLoad.Add("uid");
dirSearcher.SearchScope = SearchScope.Subtree;
SearchResult result = dirSearcher.FindOne();
DirectoryEntry directEntry = result.GetDirectoryEntry();
Console.WriteLine("Result: {0}", directEntry.Properties["uid"].Value.ToString());
任何想法如何解决这个问题?
答案 0 :(得分:1)
许多LDAP服务器实现对查询中返回的结果数量有限制。
AD默认为1000或2000.我忘记了。 eDirectory默认为无限制。其他人各不相同。
您可以要求管理员更改限制,否则请将您的代码分页,以便一次只获得一个页面(或有限数量的结果)。
答案 1 :(得分:1)
删除此行并且有效:
dirSearcher.PropertiesToLoad.Add("uid");
必须从每个结果中获取UID而不仅仅是匹配结果,因此超过了管理员限制。