C# 无法在SearchRequest中查询没有可分辨名称的广告?

C# 无法在SearchRequest中查询没有可分辨名称的广告?,c#,active-directory,distinguishedname,C#,Active Directory,Distinguishedname,我正在运行一个测试Active directory,并尝试使用ldap进行查询。我创建了一个名为空的searchrequest对象和一个过滤器,这会抛出带有“object不存在”消息的noSuchObject错误代码。我只是从我的测试广告中得到这个,如果我使用我公司的制作广告,我不会得到例外,只是一个没有点击的回应。我需要在我的测试广告中改变什么才能看到类似的行为 您可以使用PrincipalSearcher和“示例查询”主体进行搜索: // create your domain context

我正在运行一个测试Active directory,并尝试使用ldap进行查询。我创建了一个名为空的searchrequest对象和一个过滤器,这会抛出带有“object不存在”消息的noSuchObject错误代码。我只是从我的测试广告中得到这个,如果我使用我公司的制作广告,我不会得到例外,只是一个没有点击的回应。我需要在我的测试广告中改变什么才能看到类似的行为

您可以使用
PrincipalSearcher
和“示例查询”主体进行搜索:

// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// define a "query-by-example" principal - here, we search for a UserPrincipal 
// and with specified last name (surname)
UserPrincipal qbeUser = new UserPrincipal(ctx);
qbeUser.Surname = "Willis";

// create your principal searcher passing in the QBE principal    
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);

// find all matches
foreach(var found in srch.FindAll())
{
    // do whatever here - "found" is of type "Principal" - it could be user, group, computer.....          
}
如果您还没有-请阅读MSDN文章,这篇文章很好地展示了如何最好地利用
System.DirectoryServices.AccountManagement中的新功能

当然,根据您的需要,您可能希望在您创建的“示例查询”用户主体上指定其他属性:

  • 姓氏
    (或姓氏)
  • DisplayName
    (通常为:名字+空格+姓氏)
  • SAM帐户名
    -您的Windows/AD帐户名
  • 用户主体名称
    -您的”username@yourcompany.com“样式名

您可以在
UserPrincipal
上指定任何属性,并将其用作
PrincipalSearcher
的“示例查询”

@marc\u通过给您一种搜索方式来回答

回到你的问题,回忆一下:

可以使用LDAP搜索

  • 您请求开始搜索的点头(在您的情况下是OU的DN)
  • 搜索范围(基本、一级、子树)
  • 搜索的筛选器((objectClass=group))
  • 要检索的属性

  • 在您的情况下,当您的ADSI层能够找到一个默认域时,它就会工作。因此,我认为您必须创建一个真正的LDAP-SEARCH请求,也许还需要提供凭据。

    谢谢您的其他回答。我通过在连接中使用GC端口3268而不是DC端口389解决了问题。

    我们可以查看查询吗?您需要添加生产广告正在使用的类/模式。