1

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());

これを回避する方法はありますか?

4

2 に答える 2

1

多くのLDAPサーバーの実装には、クエリで返される結果の数に制限があります。

ADのデフォルトは1000または2000です。手に負えないことを忘れています。eDirectoryのデフォルトは無制限です。その他は異なります。

管理者に制限を変更するように依頼するか、コードをページングして、一度に1ページ(または限られた数の結果)のみを取得するようにすることができます。

于 2010-07-08T16:08:16.857 に答える
1

この行を削除すると、機能します。

dirSearcher.PropertiesToLoad.Add("uid");

一致する結果だけでなく、すべての結果からUIDを取得している必要があるため、管理者の制限を超えていました。

于 2010-07-08T16:08:43.517 に答える