重命名目录中的现有条目会出现错误 "Naming Violation"

Renaming an existing entry in the directory gives an error saying "Naming Violation"

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

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

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

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

我正在关注 this link。

有 2 个问题需要解决:

  • RDN 表示 relative DN :DN 中实际生成的部分 与同一容器中的其他条目不同的条目,例如: CN=arshath shameerCN=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 变量设置正确。



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

请使用“CN=arshath shameer”代替CN=arshath newRDN参数中的shameer,CN=Users,DC=wxyzdev,DC=xyzdev,DC=ca

谢谢
FRS.