我试图通过运行以下命令来查找asp.net c#中的所有文件夹来同步到交换文件夹。
view.Traversal = FolderTraversal.Deep;
FindFoldersResults findFolderResults = service.FindFolders(new FolderId(WellKnownFolderName.Root, mailbox), view);
但是,之前在其他邮件服务器上运行的此命令对于我正在使用的当前邮件服务器失败了。此行返回的错误是
Microsoft.Exchange.WebServices.Data.ServiceVersionException: Exchange Server doesn't support the requested version.
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request)
at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.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)
有趣的是交换服务器都是Exchange 2010,所以任何人都知道这究竟是什么问题?或者究竟是什么导致命令不受支持。
The successful run server is version 14.03.0195.001
The failed server version is 14.00.0722.000
此错误是否真的是由此轻微错误引起的?我的意思是他们两个都是Exchange 2010服务器真的不应该命令是一样的吗?
答案 0 :(得分:6)
尝试使用ExchangeVersion.Exchange2010
实例化ExchangeService对象。 (对于SP1和SP2也有ExchangeVersions
。)我不知道每个上的14.x.y.z数字,但显然失败的服务器是低于工作的服务器。 EWS不会抱怨你想要的功能,而是抱怨你要求的版本。因此,如果发生故障的服务器正在运行E2010 SP1,并且您的EWS DLL默认为Exchange2010_SP2,则事情将无效。您可能安全地降级到E2010的RTM风格,除非您的代码的其他部分需要SP1或SP2中的特定内容,在这种情况下,您将必须准确确定14.xyz数字对应的内容。