有谁知道如何使用 EWS 托管 API 在单个 EWS 调用中绑定(bind)到多个项目(仅给出相关项目的 ItemId)?
这是我的应用程序目前的工作方式:
- 重复调用 ExchangeService.FindItems() 以生成可能非常大的项目列表(数十万或更多)。
- 将 ItemId 存储在数据库中(作为字符串)。
- 依次从数据库中读取每个 ItemId,使用 Item.Bind() 绑定(bind)到该项目并对其进行处理(处理细节并不重要)。
问题是,处理每个项目并不需要很长时间,因此我的代码大约一半的时间都花在 Item.Bind() 上。它可能也不会让 Exchange 邮箱服务器感到非常高兴,因为它必须满足持续不断的微小查询。在我看来,“批量”请求、一次加载大约 100 个左右项目的属性会更有效。
现在,我确信您在问 - 为什么不在每次 FindItems() 调用后跳过数据库并调用 ExchangeService.LoadPropertiesForItems() ?嗯……这东西很有可能在处理完所有项目之前就被停止了。当它再次启动时(可能是几小时或几天后),它需要能够从停止的位置恢复。使用 FindItems() 的代码非常重要,弄清楚如何保存其状态以供以后恢复将是一场彻头彻尾的噩梦。
我找到了Loading Properties for Multiple Items with One Call to Exchange Web Services ,这解释了 LoadPropertiesForItems() 在幕后使用 EWS GetItem 调用。它确实接受 ItemId 列表,但该功能似乎并未通过托管 API 公开(LoadPropertiesForItems() 需要已绑定(bind) Item 对象的列表,而不仅仅是 ItemId)。
有几个问题:
- 我错过了什么吗? EWS 托管 API 中是否确实有一个方法可以实现我正在寻找的功能?
- 如果没有,一旦我开始托管 API session ,有没有办法“搭载”原始 EWS SOAP 调用,而不必再次经历所有身份验证等困难?里>
- 我只是以某种惊人的方式做错了吗? :-)
最佳答案
ExchangeService.BindToItems这就是您正在寻找的。p>
关于c# - EWS 托管 API : Can I load properties for multiple items with one EWS call, 仅给出项目 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27848170/