小编ewa*_*ald的帖子

无法使用内容同步操作(syncrepl)从OpenLDAP Server获取已删除的项目

我在Ubuntu 19.04 VM上设置了OpenLDAP服务器,并允许复制(使用本教程:https : //help.ubuntu.com/lts/serverguide/openldap-server.html#openldap-server-replication)。复制的一切似乎都可以。我尚未设置消费者服务器,因为我的代码将像一个服务器一样,定期拉出修改后的元素。

修改/添加的条目已正确检索,但是我想删除项目,但似乎无法正常工作。

如RFC https://tools.ietf.org/html/rfc4533#section-3.3.2所述,我应该收到一个同步信息消息,其中包含名为“ syncUUIDs”的属性

syncUUID包含一组自上次同步操作以来已从内容中删除的条目和引用的UUID

我的同步请求控制初始化

syncRequestValue = BerConverter.Encode("{iob}", new object[] { refreshOnly, cookieSrc, true });
testdsrc = new DirectoryControl("1.3.6.1.4.1.4203.1.9.1.1", syncRequestValue, true, true);

Run Code Online (Sandbox Code Playgroud)

将控件添加到请求,然后发送它。

request.Controls.Add(testdsrc);
connection.SendRequest(request);
response = (SearchResponse)connection.SendRequest(request);
Run Code Online (Sandbox Code Playgroud)

获取条目,这里我删除了1个条目,修改了1个并添加了1个,我只得到2个条目(添加/修改的条目)

entries = response.Entries;
if (response.Entries.Count > 0)
{
    object[] controlvalue = BerConverter.Decode("{Ob}", 
    response.Controls[0].GetValue());
    cookieSrc = (byte[])controlvalue[0];
    var refreshDeletes = (bool)controlvalue[1];
    File.WriteAllBytes(strFileName, cookieSrc);
}
Run Code Online (Sandbox Code Playgroud)

您是否知道它来自我的LDAP服务器的配置还是来自C#中的代码?

我不知道是否:

  • 我的服务器发送了正确的响应,而SearchResponse类不知道如何解释它

要么

  • 如果我的服务器配置错误并且根本不发送已删除条目的列表...

c# directoryservices ldap openldap .net-core

9
推荐指数
1
解决办法
152
查看次数

标签 统计

.net-core ×1

c# ×1

directoryservices ×1

ldap ×1

openldap ×1