EWS Managed API:我能否通过一个 EWS 调用加载多个项目的属性,只给出项目 ID?

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

有谁知道使用 EWS Managed API 在单个 EWS 调用中绑定到多个项目的任何方法,仅给出相关项目的 ItemIds?

这是我的应用程序目前的工作方式:

问题是,处理每个项目并不需要很长时间,所以我的代码将大约一半的时间花在 Item.Bind() 上。它可能也不会让 Exchange 邮箱服务器非常高兴,因为它必须满足持续不断的微小查询。在我看来,"batch up" 一次为大约 100 个项目加载属性的请求会更有效率。

现在,我确定您在问 - 为什么不直接跳过数据库并在每次 FindItems() 调用后调用 ExchangeService.LoadPropertiesForItems()?嗯……这东西在处理完所有物品之前,肯定有可能会停止。当它再次启动时(可能几小时或几天后),它需要能够从中断的地方恢复。使用 FindItems() 的代码非常重要,弄清楚如何保存其状态以供以后恢复将是一场彻头彻尾的噩梦。

我发现 Loading Properties for Multiple Items with One Call to Exchange Web Services,这说明 LoadPropertiesForItems() 正在幕后使用 EWS GetItem 调用。它确实接受 ItemId 列表,但该功能似乎并未通过托管 API 公开(LoadPropertiesForItems() 需要已绑定 Item 对象的列表,而不仅仅是 ItemId)。

所以真的有几个问题:

  1. 我错过了什么吗? EWS Managed API 中的某处实际上是否有一种方法可以满足我的需求?
  2. 如果没有,一旦我有一个托管 API 会话,有没有办法 "piggy back" 对其进行原始 EWS SOAP 调用而无需通过所有身份验证等。再次,艰难的道路?
  3. 我是不是做错了什么? :-)

ExchangeService.BindToItems 就是您要找的。