LdapConnection SearchRequest 抛出“超出大小限制”异常

2023-11-22

由于我们需要使用 LDAPS 连接到 LDAP 服务器,因此我们必须使用 LdapConnection 而不是 DirectoryEntry。

这是源代码:

        SearchResponse response;
        using (LdapConnection con = new LdapConnection(new LdapDirectoryIdentifier(Host, Port)))
        {
            if (IsSSL)
            {
                con.SessionOptions.SecureSocketLayer = true;
                con.SessionOptions.VerifyServerCertificate =
                    (connection, certificate)
                    => true;
            }
            con.Credential = new NetworkCredential(_username, _password);
            con.AuthType = AuthType.Basic;
            con.Bind();

            if (logMessage != null)
                logMessage("Connected to LDAP");

            string sFilter = String.Format(
                "(&(objectcategory=person)(objectclass=user){0}(!(userAccountControl:1.2.840.113556.1.4.803:=2)))",
                filter
                );

            SearchRequest request = new SearchRequest("OU=Corp,DC=mydc,DC=com", sFilter, SearchScope.Subtree);
            request.Attributes.Add(Resources.objectguid);
            request.Attributes.Add(Resources.givenname);
            request.Attributes.Add(Resources.sn);
            request.Attributes.Add(Resources.initials);
            request.Attributes.Add(Resources.samaccountname);
            request.Attributes.Add(Resources.userprincipalname);
            request.Attributes.Add(Resources.mail);
            request.Attributes.Add(Resources.objectsid);
            request.Attributes.Add(Resources.department);
            request.Attributes.Add(Resources.company);
            request.SizeLimit = 10;

            response = (SearchResponse) con.SendRequest(request);
        }

执行源代码后(我们已经验证了凭据、主机、端口等 - 使用外部第 3 方软件),我们得到以下异常:

超出了大小限制

描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。

异常详细信息:System.DirectoryServices.Protocols.DirectoryOperationException:超出了大小限制

来源错误:

response = (SearchResponse) con.SendRequest(request);
[DirectoryOperationException: The size limit was exceeded]
   System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32

messageId、LdapOperation 操作、ResultAll 结果类型、TimeSpan requestTimeOut,布尔异常OnTimeOut)+2385 System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest 请求,时间跨度请求超时)+499 System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest 请求)+50 UserSearchProvider.ADUserSearchProvider.QueryStore(UserSearchCriteriaCollection 标准、行动1 logMessage) in c:\Users\stemarie\Documents\Visual Studio 2012\Projects\Idealink.Modules\UserSearchProvider\UserSearchProvider\ADUserSearchProvider.cs:298 UserSearchProvider.UserSearchProvider.QueryAndSort(UserSearchCriteriaCollection criterias, Action1 logMessage) 在 c:\Users\stemarie\Documents\Visual 中 工作室 2012\项目\Idealink.Modules\UserSearchProvider\UserSearchProvider\UserSearchProvider.cs:77 UserSearchProvider.UserSearchProvider.Search(UserSearchCriteriaCollection 标准、行动1 logMessage) in c:\Users\stemarie\Documents\Visual Studio 2012\Projects\Idealink.Modules\UserSearchProvider\UserSearchProvider\UserSearchProvider.cs:33 UserSearchProvider.UserSearchService.Search(UserSearchCriteriaCollection criterias, Action1 logMessage) 在 c:\Users\stemarie\Documents\Visual 中 工作室 2012\项目\Idealink.Modules\UserSearchProvider\UserSearchProvider\UserSearchService.cs:44 UserSearchProviderTest._Default.Page_Load(对象发送者,EventArgs e)位于 c:\Users\stemarie\Documents\Visual Studio 2012\项目\Idealink.Modules\UserSearchProvider\UserSearchProviderTest\Default.aspx.cs:28

让我困惑的部分是我们确实指定了最大大小限制,我们不想要超过 100 个条目 - 我们想要限制它。但即使我们将 SizeLimit 指定为 1,库仍然会抛出错误。

有人对这个问题有任何见解/建议吗?我们已经非常接近实现这一目标,只需要解决最后一个问题。


您应该在与此类似的函数中使用 cookie。 该函数返回 SearchResponse 对象的集合,调用者应该循环遍历该集合。

private List<SearchResponse> SearchDirectory(string distinguishedName, string searchFilter, System.DirectoryServices.Protocols.SearchScope searchScope, params string[] attributeList)
{
    List<SearchResponse> result = new List<SearchResponse>();
    SearchResponse response = null;
    int maxResultsToRequest = 100;
    try
    {
        PageResultRequestControl pageRequestControl = new PageResultRequestControl(maxResultsToRequest);

        // used to retrieve the cookie to send for the subsequent request
        PageResultResponseControl pageResponseControl;
        SearchRequest searchRequest = new SearchRequest(distinguishedName, searchFilter, searchScope, attributeList);
        searchRequest.Controls.Add(pageRequestControl);

        while (true)
        {
            response = (SearchResponse)connection.SendRequest(searchRequest);
            result.Add(response);
            pageResponseControl = (PageResultResponseControl)response.Controls[0];
            if (pageResponseControl.Cookie.Length == 0)
                break;
            pageRequestControl.Cookie = pageResponseControl.Cookie;
        }
    }
    catch (Exception e)
    {
        // do something with the error

    }
    return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LdapConnection SearchRequest 抛出“超出大小限制”异常 的相关文章

  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 回发或回调参数无效。使用“”启用事件验证

    当我从客户端回发页面时 出现以下错误 我有修改客户端 asp ListBox 的 JavaScript 代码 我们该如何解决这个问题 错误详细信息如下 Server Error in XXX Application Invalid post
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • 私有模板函数

    我有一堂课 C h class C private template
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • 视图未附加到窗口管理器崩溃

    我正在使用 ACRA 来报告应用程序崩溃 我正在得到一个View not attached to window manager错误消息并认为我已经通过包装来修复它pDialog dismiss 在 if 语句中 if pDialog nul
  • Python - 连接多个线程并设置超时

    我有多个进程线程正在运行 我想加入all它们与超时参数一起 我知道如果不需要超时 我可以写 for thread in threads thread join 我想到的一个解决方案是使用一个主线程将所有线程连接在一起并尝试连接该线程 但是
  • Linux内核.mod.c文件中版本信息的含义

    在所有可加载内核模块中 当make给出它会生成一个名为的文件modulename mod c此外modulename ko 以下代码摘录自 mod c文件 其中包含一个 number function 一对 这个数字有什么意义呢 这个数字是
  • AC账户存储错误5

    当尝试将帐户保存到 ACAccountStore 时 我有时会收到此错误 稍后 如果我尝试访问该帐户 我发现它实际上已被保存 到目前为止 我还没有找到有关这个不起眼的错误的任何信息 有谁知道这意味着什么 错误域 com apple acco
  • Azure - 通知中心命名空间错误

    Im trying to set up push notifications with Azure at the moment but every time i go and try to set up a notification hub
  • 抑制 JSP 文件中的 Java 未检查警告

    我有一个旧版 Web 应用程序 它使用 jstl 和 Struts 1 标签 当我使用 Java 5 6 预编译 JSP 文件时 jstl 和 Struts 1 标记会抛出有关 未经检查或不安全操作 的警告 例如 如果我使用以下标签 抛出以
  • Python MysqlDB 使用cursor.rowcount 和 SSDictCursor 返回错误的计数

    我有以下代码 cur db cursor cursors SSDictCursor cur execute SELECT FROM large table result count cur rowcount print result cou
  • CSS:如何使水平列表居中?显示:内嵌不工作

    我在让最简单的代码工作时遇到了很大的困难 我希望我的 css 水平列表居中 仅此而已 链接在这里 http bit ly LtIBai 我有这个代码 megaMenu megaMenuHorizontal ul megaMenu text
  • OS X / Linux:通过管道连接到两个进程?

    我知道关于 program1 program2 and program1 tee outputfile program2 但是有没有办法将程序的输出同时输入到程序和程序 3 中呢 你可以这样做tee和流程替代 program1 tee gt
  • PSQLException:此 ResultSet 已关闭

    我一生中第一次出现这种奇怪的错误 我不知道这意味着什么 我有一个类 它从 postgresql 数据库上的表中检索信息 执行一些操作并返回带有解析元素的数组列表 ResultSet rs ProduttoreDCS getProduttor
  • 选择中的 LINQ 选择

    我正在尝试查询包含以下内容的集合Employee信息 当我查询该集合时 我想返回对象的枚举 其中每个对象都有两个字段 Name 经理姓名 请注意 每个经理也是员工 现在 这是我遇到的问题 当我做一个select在一个select 的值Man
  • f.seek() 和 f.tell() 读取文本文件的每一行

    我想打开一个文件并使用读取每一行f seek and f tell 测试 txt abc def ghi jkl 我的代码是 f open test txt r last pos f tell get to know the current
  • Outlook 回复或回复全部电子邮件

    Set objOutlook CreateObject Outlook Application Set objMail objOutlook CreateItem 0 objMail To email protected objMail c
  • 如何使参数推导适用于使用基类构造函数的派生类?

    当派生类使用基类构造函数时 推论似乎总是fail 然而 当基类有很多构造函数时 重新定义所有构造函数是非常笨拙的 当基类快速演变为新的构造函数时 这也是一个痛苦 老问题是两年多前提出的 所以我想知道 在 2020 年 c 17 和 c 2a
  • qDebug Qt 控制台应用程序输出到 Qt Creator 应用程序输出

    如何在 Qt 控制台应用程序中使用 qDebug 输出到 Qt Creator 应用程序输出 窗口 当前 qDebug 写入控制台窗口 这会干扰非调试输出 默认情况下 在 Qt GUI 应用程序中使用 qDebug 会输出到应用程序输出窗口
  • 在 ARKit 中获取设备绕世界原点 y 轴的旋转

    当我在 ARKit 中绕 y 轴旋转设备时 我试图计算设备的旋转 为了澄清起见 ARKit 中的 y 轴是垂直于地面指向上方的轴 我使用 eulerangles 来获得相机的旋转 如下所示 var alpha sceneView point
  • Entity Framework 4.1 Codefirst:删除一对多子项时出现“给定多重约束”错误

    我有以下课程实体框架4 1 这些类已被修剪以保持代码的可读性 public class MetaInformation public int Id get set public virtual MetaInformationObject R
  • 存储/检索数据结构

    我已经实施了一个后缀树在Python中进行全文搜索 而且效果非常好 但有一个问题 索引文本可能非常大 因此我们无法在 RAM 中拥有整个结构 IMAGE 单词的后缀树BANANAS 在我的场景中 想象一棵大 100000 倍的树 因此 经过
  • 线性化深度

    在 OpenGL 中 您可以像这样线性化深度值 float linearize depth float d float zNear float zFar float z n 2 0 d 1 0 return 2 0 zNear zFar z
  • LdapConnection SearchRequest 抛出“超出大小限制”异常

    由于我们需要使用 LDAPS 连接到 LDAP 服务器 因此我们必须使用 LdapConnection 而不是 DirectoryEntry 这是源代码 SearchResponse response using LdapConnectio