【问题标题】:DirectoryEntries.Find: "An invalid dn syntax has been specified"DirectoryEntries.Find:“指定了无效的 dn 语法”
【发布时间】:2013-04-23 11:31:21
【问题描述】:

我正在尝试在当前域中查找用户。代码是这样的:

DirectoryEntry domain = new DirectoryEntry("LDAP://CN-Users, DC=" + Environment.UserDomainName);
            DirectoryEntries entries = domain.Children;
            try
            {
                // The following line causes the exception
                DirectoryEntry user = entries.Find("(&(objectCategory=user)(cn=" + userName + "))", ActiveDirectoryEntryType.User.TypeName);
                user.DeleteTree();
                user.CommitChanges();
            }
            catch
            {}

我收到一个错误:

An invalid dn syntax has been specified.

我也尝试了以下代码,得到了同样的错误:

DirectoryEntry user = entries.Find(userName, ActiveDirectoryEntryType.User.TypeName);

我在帮助文件中找不到有关正确语法的信息。有谁知道这是怎么做到的?

【问题讨论】:

  • 您好,您在 LDAP 上查找的用户名值是什么?

标签: c# active-directory ldap


【解决方案1】:

您在此声明中有错误:

DirectoryEntry domain = new DirectoryEntry("LDAP://CN-Users, DC=" + Environment.UserDomainName);

我几乎可以肯定它应该是:LDAP://CN=Users, instaed of LDAP://CN-Users,

第二件事是DC=" + Environment.UserDomainName,这可能是错误的,因为通常它是这样的:LDAP://OU=Finance,dc=fabrikam,dc=com(有多个 DC)

您可以使用 powershell 找到所有 DC。运行以下命令:

New-Object DirectoryServices.DirectoryEntry

【讨论】:

  • 好的,现在我很尴尬...你是对的,CN- 是错误。关于域名 - 是的,我知道,我将要更改该代码,但同时它就足够了,因为域名只是一个词。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 2014-12-08
  • 2023-02-17
相关资源
最近更新 更多