LDAP问题用于检索Exchange 2007的会议室列表

时间:2012-11-20 16:52:54

标签: c# ldap directoryservices exchange-server-2007

我正在尝试使用c#查找Exchange Server 2007的所有会议室。我通过使用EWS托管API找到了一种简单的方法:

http://msdn.microsoft.com/en-us/library/exchange/hh532566(v=exchg.80).aspx

不幸的是,GetRoomLists()不适用于Exchange Server 2007.我希望如果有人工作或知道如何在Exchange Server 2007上找到会议室,那将是一个很好的帮助。我希望在Exchange服务器上看到所有可用的会议室,然后想要使用它们的属性。

有没有办法可以显示所有现有的房间,然后使用其属性,如电话/备注标签信息?

我正在使用LDAP,但它一直给我错误“服务器无法运行”。我想可能是我使用了错误的凭证。因此我尝试使用谷歌并没有帮助我。

随函附上我的代码: -

        using (DirectoryEntry dir2 = new DirectoryEntry("LDAP://www.google.com/DC=www,DC=google,DC=com", null, null,  AuthenticationTypes.Encryption))
        {
           dir2.RefreshCache();

            DirectorySearcher adSearch = new DirectorySearcher(dir2);
            adSearch.Filter = "(&(objectClass=*)(msExchRecipientDisplayType=7))";
            SearchResultCollection adResult = adSearch.FindAll();

            foreach (SearchResult item in adResult)
            {

                ResultPropertyCollection property = item.Properties;

                ResultPropertyValueCollection name = property["name"];
                ResultPropertyValueCollection proxyAddresses = property["proxyAddresses"];
                ResultPropertyValueCollection legacyExchangeDN = property["legacyExchangeDN"];

                ..........
        }
}

它给出了封闭代码的错误: - dir2.RefreshCache(); 我不确定,我做错了什么。我尝试过不同的LDAP值,如: - using (DirectoryEntry dir2 = new DirectoryEntry("LDAP://ldap.google.com/DC=www,DC=google,DC=com", null, null, AuthenticationTypes.Encryption))

using (DirectoryEntry dir2 = new DirectoryEntry("LDAP:///DC=www,DC=google,DC=com", null, null, AuthenticationTypes.Encryption))

using (DirectoryEntry dir2 = new DirectoryEntry("LDAP://DC=www,DC=google,DC=com", null, null, AuthenticationTypes.Encryption))

但没有什么能真正帮助我。

你知道我做错了吗?

附上请找到堆栈跟踪:

 at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.RefreshCache()
   at Test_Exchange.Program.Main(String[] args) in C:\Inetpub\wwwroot\Test Exchange\Test Exchange\Program.cs:line 26
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

非常感谢任何帮助或建议。

提前致谢!!

1 个答案:

答案 0 :(得分:0)

我想分享我做错了什么。它可能会帮助别人。 它现在运作良好。问题是AD名称错误。 请与IT或管理员确认您是否使用了正确的Active Directory名称。

干杯!!