【发布时间】:2011-07-21 04:59:34
【问题描述】:
我们目前有以下设置:
单个 Exchange 2003 服务器 – 同时运行 Exchange 2010 公用文件夹数据库 单个 Exchange 2010 服务器 – 还运行 Exchange 2010 公用文件夹数据库和客户端访问角色(例如,使用 EWS、OWA 等)
我们在 2010 年保留了公用文件夹,在 2003 年保留了公用文件夹。我们正在服务器之间双向复制公用文件夹(通过公用文件夹管理控制台配置)。
我们有一个测试帐户,在 Exchange 2010 上有一个邮箱,该邮箱具有最高级别的权限(域管理员以及 Exchange 中的“组织管理”)。这个用户被称为“灰色”。已明确授予用户对 2010 公用文件夹数据库和 2003 公用文件夹数据库中所有公用文件夹的完全所有权。我们可以确认我们可以通过 OWA 和 Outlook 完全可以访问和使用公用文件夹。
我们遇到的问题是通过 Exchange 访问公用文件夹。我们可以确认访问邮箱本身内的普通文件夹没有问题并且工作正常。
当运行以下简单代码 sn-p 循环遍历公共文件夹时,我们遇到了错误:
public static void PublicFolderTest()
{
// Connect to Exchange Web Services
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.Url = new Uri("https://gblonxch11/EWS/Exchange.asmx");
service.Credentials = new WebCredentials("grey@home.local", "Welcome1");
System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);
FolderView folderView = new FolderView(int.MaxValue);
FindFoldersResults findResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, folderView);
if (findResults.Folders.Count > 0)
{
Console.WriteLine("Looping Through Public Folders");
}
}
此代码 sn-p 因 FindFolders 调用而失败,并带有以下错误堆栈:
Microsoft.Exchange.WebServices.Data.ServiceResponseException was unhandled
Message=The mailbox that was requested doesn't support the specified RequestServerVersion.
Source=Microsoft.Exchange.WebServices
StackTrace:
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.InternalExecute()
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalFindFolders(IEnumerable`1 parentFolderIds, SearchFilter searchFilter, FolderView view, ServiceErrorHandling errorHandlingMode)
at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(FolderId parentFolderId, FolderView view)
at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(WellKnownFolderName parentFolderName, FolderView view)
at testspace.Program.PublicFolderTest() in F:\Source Code\TestApp\TestApp\Program.cs:line 40
at testspace.Program.Main(String[] args) in F:\Source Code\TestApp\TestApp\Program.cs:line 26
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
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()
InnerException:
我们还在 IIS 中为 EWS 应用程序打开了“失败的请求跟踪”。内部堆栈跟踪作为文件“UsingExchangeVersion2010.zip”附加。错误堆栈尚无定论——但堆栈内部存在与身份验证问题相关的错误。
我们还尝试将 EWS 托管 API 使用的 ExchangeVersion 设置为 Exchange2007_SP1:
public static void PublicFolderTest()
{
// Connect to Exchange Web Services
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Url = new Uri("https://gblonxch11/EWS/Exchange.asmx");
service.Credentials = new WebCredentials("grey@home.local", "Welcome1");
System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);
FolderView folderView = new FolderView(int.MaxValue);
FindFoldersResults findResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, folderView);
if (findResults.Folders.Count > 0)
{
Console.WriteLine("Looping Through Public Folders");
}
}
这会导致错误,但错误略有不同:
Microsoft.Exchange.WebServices.Data.ServiceResponseException was unhandled
Message=An internal server error occurred. The operation failed.
Source=Microsoft.Exchange.WebServices
StackTrace:
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.InternalExecute()
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalFindFolders(IEnumerable`1 parentFolderIds, SearchFilter searchFilter, FolderView view, ServiceErrorHandling errorHandlingMode)
at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(FolderId parentFolderId, FolderView view)
at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(WellKnownFolderName parentFolderName, FolderView view)
at testspace.Program.PublicFolderTest() in F:\Source Code\TestApp\TestApp\Program.cs:line 40
at testspace.Program.Main(String[] args) in F:\Source Code\TestApp\TestApp\Program.cs:line 26
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
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()
InnerException:
IIS 内部的 EWS 堆栈跟踪作为文件“UsingExchangeVersion2007.zip”附加。内部堆栈跟踪再次不确定——但似乎与身份验证问题有关。
谁能告诉我们以前是否见过这种情况,也许根本原因是什么?
【问题讨论】:
标签: exchange-server exchangewebservices