Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Exchange Server 2007 SP1获取最新的SyncState_C#_Exchangewebservices_Exchange Server 2007_Ews Managed Api - Fatal编程技术网

C# 如何从Exchange Server 2007 SP1获取最新的SyncState

C# 如何从Exchange Server 2007 SP1获取最新的SyncState,c#,exchangewebservices,exchange-server-2007,ews-managed-api,C#,Exchangewebservices,Exchange Server 2007,Ews Managed Api,我正在使用EWS api进行电子邮件操作。 当用户最初设置他的帐户时,我只需要收集他的帐户的最新同步状态。我的CRON作业定期检查从那时起的最新更改。 这是密码 var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); service.Url = new Uri("https://" + data.ServerAddress + "/ews/Exchange.asmx"); servi

我正在使用EWS api进行电子邮件操作。
当用户最初设置他的帐户时,我只需要收集他的帐户的最新同步状态。我的CRON作业定期检查从那时起的最新更改。
这是密码

var service         = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Url         = new Uri("https://" + data.ServerAddress + "/ews/Exchange.asmx");
service.Credentials = new NetworkCredential(data.EMail, data.Password);
ServicePointManager.ServerCertificateValidationCallback = (xyzxyz, certificate, chain, sslPolicyErrors) => true;
ChangeCollection<ItemChange> icc = service.SyncFolderItems(new FolderId(WellKnownFolderName.Inbox),
                                                           PropertySet.FirstClassProperties,
                                                           null,
                                                           512,
                                                           SyncFolderItemsScope.NormalItems,
                                                           null );
return icc.SyncState;
var服务=新的ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Url=新Uri(“https://“+data.ServerAddress+”/ews/Exchange.asmx”);
service.Credentials=新的网络凭据(data.EMail、data.Password);
ServicePointManager.ServerCertificateValidationCallback=(xyzxyz,证书,链,sslPolicyErrors)=>true;
ChangeCollection icc=service.SyncFolderItems(新FolderId(WellKnownFolderName.Inbox),
PropertySet.FirstClassProperties,
无效的
512,
SyncFolderItemsScope.NormalItems,
无效);
返回icc.SyncState;
问题在于用户最初设置帐户时收集SyncState。
假设用户收件箱中有600封电子邮件。当我用上面的代码请求syncstate时,我得到的syncstate对前512封电子邮件有效。我将不得不再打一次电话来获取下一个有效且最终的syncstate。这将增加用户设置帐户的等待时间。若用户收件箱中有10000封邮件,则需要向EWS打20个电话才能获得最终同步状态。

如何通过一次呼叫EWS获得最终或最新同步状态?

您无法通过一次呼叫获得最新同步状态,请参阅。请注意,从Exchange 2010 SP2开始,EWS将从最新的项目返回到最旧的项目,因此用户将首先获取最新的项目-他们不必等待所有20次呼叫