我要搜索包含他们对Exchange服务器全局地址列表中的名称有一定的文本字符串的所有用户。此操作会从ASP.NET应用程序中进行。需要注意的是,GAL是必需的(不是Active Directory),因为它包含了整个域的用户。这也是客户所要求的东西。

我一直期待在Exchange Web服务和Outlook Web Access的方法。然而也不得在我的组织进行配置,所以我需要了解哪些选项是要求基础设施配置它之前是正确的。

<强> Exchange Web服务

我希望使用 ResolveNames 方法在Exchange Web服务。为它的文档指出:

  

活动目录首先被搜索,然后将用户的联系人文件夹被搜索。

这似乎意味着,该方法将只从当前域返回用户。这是正确的吗?

<强>的Outlook Web Access

我发现的另一种选择是GALFind。这看起来很完美,但 指出,它是不受支持。经确认,因为这的Technet 文章中不再可用。

任何人都可以请这些或任何其他的选择给出建议?

有帮助吗?

解决方案

可以通过启动从森林根查询跨域查询。这里是我结束了使用的代码:

string filter = "(&(objectCategory=person)(objectClass=user)(name=*" + search + "*))";
var rootEntry = new DirectoryEntry("GC:");
foreach (DirectoryEntry entry in rootEntry.Children)
{
    DirectoryEntry forestEntry = entry;
    DirectorySearcher searcher = new DirectorySearcher
        {
            SearchRoot = forestEntry,
            Filter = filter,
            Sort =
                {
                    Direction = SortDirection.Ascending,
                    PropertyName = "cn"
                }
        };
    searcher.PropertiesToLoad.AddRange(ADProperties.Values.ToArray());
    SearchResultCollection results = searcher.FindAll();
    foreach (SearchResult result in results)
    {
        DirectoryEntry foundEntry = result.GetDirectoryEntry();

        // Do something
    }
}

其他提示

我没有外汇专家,但你不能做到这一点使用的协作数据对象(CDO),尽管它可能不是太迅速

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top