首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectoryServices.Protocols.SearchRequest返回GUID的多个结果

DirectoryServices.Protocols.SearchRequest返回GUID的多个结果
EN

Stack Overflow用户
提问于 2016-11-25 03:01:27
回答 2查看 1.3K关注 0票数 2

我正在编写与Microsoft Active Directory集成的软件。以前,我们使用如下查询在DirectoryServices.Protocols.SearchRequest中搜索特定用户:

代码语言:javascript
复制
var request = new SearchRequest("DC=corp,DC=spring,DC=lan", "(objectGUID=\71\ad\7d\cc\6e\fa\cc\4e\87\c5\b7\a8\5b\85\e7\36)", ...

然而,我们发现它可能会很慢,这取决于树中对象的数量,所以我们切换到:

代码语言:javascript
复制
var request = new SearchRequest("<GUID=cc7dad71-fa6e-4ecc-87c5-b7a85b85e736>", "(objectCategory=*)", ...

在我们的测试环境中,这是有效的,而且似乎执行得更快,但我们的最终用户一直在报告问题。我已经从日志文件中获得了足够的诊断信息,以确定问题是新的查询返回了多个条目结果,而软件只希望返回一个条目结果,而这就是我目前要做的所有工作。

有人知道额外结果的来源是什么吗?我的理解是,objectGUID在Active Directory环境中应该是唯一的。

更新-实际代码:

代码语言:javascript
复制
SearchResultEntryCollection results = null;
try
{
    var request = new SearchRequest("<GUID=cc7dad71-fa6e-4ecc-87c5-b7a85b85e736>", "(objectCategory=*)",
        SearchScope.Subtree, new[] { "sAMAccountName", "objectGUID", "cn", "mail", "telephoneNumber" } );
    var response = this._connection.SendRequest(request) as SearchResponse;

    if (response != null && response.ResultCode == ResultCode.Success && response.Entries != null)
    {
        results = response.Entries;
        return results;
    }

    errorMessage = response != null && !string.IsNullOrWhiteSpace(response.ErrorMessage)
        ? response.ErrorMessage
        : "Unknown Error"
}
catch (DirectoryException e)
{
    errorMessage = e.Message;
}

//other error handling
EN

回答 2

Stack Overflow用户

发布于 2017-08-02 21:50:43

问题是,您正在搜索的用户帐户下可能还有其他一些子对象。这些子对象可以没有GUID,因此继承了父对象的GUID。

例如,Exchange-Active-Sync-Devices (SCCM/InTune设备关联):

解决方案是添加一个搜索过滤器,如下所示

代码语言:javascript
复制
(&(objectClass=person))

然后,您将只获得您正在搜索的用户帐户。

票数 1
EN

Stack Overflow用户

发布于 2017-03-03 17:26:14

您是否考虑过使用DirectoryEntry类进行GUID LDAP绑定?

如果代码只能在AD中找到单个条目,那么使用该GUID进行绑定可能会更好。尽管您必须检索所有的对象数据。

代码语言:javascript
复制
DirectoryEntry entry = new DirectoryEntry("LDAP://<GUID=cc7dad71-fa6e-4ecc-87c5-b7a85b85e736>");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40793097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档