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?
这是我的应用程序目前的工作方式:
- 重复调用 ExchangeService.FindItems() 以生成可能非常大的项目列表(数十万或更多)。
- 将 ItemId 存储在数据库中(作为字符串)。
- 从数据库中依次读取每个 ItemId,使用 Item.Bind() 绑定到项目并对其进行处理(处理细节并不重要)。
问题是,处理每个项目并不需要很长时间,所以我的代码将大约一半的时间花在 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)。
所以真的有几个问题:
- 我错过了什么吗? EWS Managed API 中的某处实际上是否有一种方法可以满足我的需求?
- 如果没有,一旦我有一个托管 API 会话,有没有办法 "piggy back" 对其进行原始 EWS SOAP 调用而无需通过所有身份验证等。再次,艰难的道路?
- 我是不是做错了什么? :-)
ExchangeService.BindToItems 就是您要找的。
有谁知道使用 EWS Managed API 在单个 EWS 调用中绑定到多个项目的任何方法,仅给出相关项目的 ItemIds?
这是我的应用程序目前的工作方式:
- 重复调用 ExchangeService.FindItems() 以生成可能非常大的项目列表(数十万或更多)。
- 将 ItemId 存储在数据库中(作为字符串)。
- 从数据库中依次读取每个 ItemId,使用 Item.Bind() 绑定到项目并对其进行处理(处理细节并不重要)。
问题是,处理每个项目并不需要很长时间,所以我的代码将大约一半的时间花在 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)。
所以真的有几个问题:
- 我错过了什么吗? EWS Managed API 中的某处实际上是否有一种方法可以满足我的需求?
- 如果没有,一旦我有一个托管 API 会话,有没有办法 "piggy back" 对其进行原始 EWS SOAP 调用而无需通过所有身份验证等。再次,艰难的道路?
- 我是不是做错了什么? :-)
ExchangeService.BindToItems 就是您要找的。