0

我正在尝试使用 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,但它一直给我错误“服务器无法运行”。我想可能是我使用了错误的凭据。因此,我尝试使用 Google,但它对我没有帮助。

随附请找到我的代码:-

        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()

任何帮助或建议将不胜感激。

提前致谢 !!

4

1 回答 1

0

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

干杯!!

于 2012-11-26T16:12:37.720 回答