1

我在 asp.net core 2.2 应用程序中使用 Novell 与 AD 交互。以下功能按预期工作。

  • 获取所有用户,获取特定OU的用户
  • 创建用户
  • 更新用户
  • 重置密码等

但是当我尝试将条目移动到新容器时,它会给出以下异常

  • 命名违规
  • ((Novell.Directory.Ldap.LdapException)e).LdapErrorMessage : "00000057: LdapErr: DSID-0C090E72,注释:属性转换操作出错,数据 0,v4563"

这是我正在使用的代码块。

var dn = $"CN={user.FirstName} {user.LastName},{this._ldapSettings.ContainerName}"; 
    //dn => CN=arshath shameer,CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca
var newRDn = $"CN={user.FirstName} {user.LastName},OU=DeletedUsers,DC=wxyzdev,DC=xyzdev,DC=ca";
    // newRDn =>  CN=arshath shameer,OU=DeletedUsers,DC=wxyzdev,DC=xyzdev,DC=ca

                using (var ldapConnection = this.GetConnection())
                {
                    //ldapConnection.Delete(dn);
                    ldapConnection.Rename(dn, newRDn, dn, true);
                }

我正在关注这个链接。

4

2 回答 2

3

有 2 个问题需要解决:

  • RDN 表示相对DN:DN 中实际上使条目与同一容器中的其他条目区分开来的部分,例如: CN=arshath shameerin CN=arshath shameer,CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca。在您的情况下,由于您不想重命名而是要移动条目,因此它不会更改:

    var newRDn = $"CN={user.FirstName} {user.LastName}";
    
  • 移动条目时 - 与重命名相反 - RDN 保持不变,但 parentDN 发生变化:

    var parentDN = "OU=DeletedUsers,DC=wxyzdev,DC=xyzdev,DC=ca";
    

现在让我们移动条目:

ldapConnection.Rename(dn, newRDN, parentDN, true);

您可能还需要检查是否{this._ldapSettings.ContainerName}替换为CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca以确保dn正确设置变量。

于 2019-06-28T09:38:24.310 回答
0



我遇到过这个问题。
从谷歌看到这个帖子后,不清楚使用“CN = arshath shadeer”。

请在 newRDN 参数中使用“ CN=arshath shadeer ”而不是CN=arshath shadeer ,CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca”

谢谢。
财务报告准则。

于 2022-02-04T14:39:53.033 回答