繁体   English   中英

EWS托管API:仅给定项目ID,是否可以通过一个EWS调用加载多个项目的属性?

[英]EWS Managed API: Can I load properties for multiple items with one EWS call, given only the item IDs?

是否只有给定相关项目的ItemIds,有人知道使用EWS托管API在单个EWS调用中绑定多个项目的任何方法吗?

目前,我的应用程序的工作方式如下:

  • 重复调用ExchangeService.FindItems()以生成可能非常大的项目列表(数十万个或更多)。
  • 将ItemIds存储为数据库(作为字符串)。
  • 从数据库中依次读取每个ItemId,使用Item.Bind()绑定到该项目并进行处理(处理的细节并不重要)。

麻烦的是,处理每个项目并不需要很长时间,因此我的代码在Item.Bind()中花费了大约一半的时间。 它也不能使Exchange邮箱服务器非常满意,必须满足不断不断的小查询查询。 在我看来,“分批”请求,一次加载大约100项左右的属性,效率会更高。

现在,我确定您在问-为什么不跳过数据库并在每次FindItems()调用之后调用ExchangeService.LoadPropertiesForItems()? 好吧……在完成所有项目的处理之前,有一定的可能性将其停止。 当它再次启动时(可能是数小时或数天),它需要能够从停止的位置恢复。 使用FindItems()的代码非常简单,以至于弄清楚如何保存其状态以供以后恢复将是一场噩梦。

我发现一次调用Exchange Web Services即可加载多个项目的属性 ,这说明LoadPropertiesForItems()在后台使用EWS GetItem调用。 那确实接受一个I​​temIds列表,但是该功能似乎没有通过Managed API公开(LoadPropertiesForItems()需要一个已经绑定的Item对象列表,而不仅仅是ItemIds)。

确实有几个问题:

  1. 我想念什么吗? EWS托管API中确实有某种方法可以满足我的需求?
  2. 如果没有,那么一旦我开始进行Managed API会话,是否有办法“背负”原始的EWS SOAP调用,而不必再次进行所有身份验证等,这很困难吗?
  3. 我只是以某种壮观的方式做错了吗? :-)

您正在寻找ExchangeService.BindToItems

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM