C# EWS托管API:我是否可以通过一个EWS调用加载多个项目的属性,只提供项目ID?

C# EWS托管API:我是否可以通过一个EWS调用加载多个项目的属性,只提供项目ID?,c#,exchangewebservices,ews-managed-api,C#,Exchangewebservices,Ews Managed Api,有人知道在一次EWS调用中使用EWS管理的API绑定多个项目的方法吗?只需给出相关项目的ItemID 下面是我的应用程序目前的工作方式: 反复调用ExchangeService.FindItems()以生成可能非常大的项目列表(数十万或更多) 将ItemID存储在数据库中(作为字符串) 从数据库中依次读取每个ItemId,使用item.bind()绑定到该项并对其进行处理(处理的细节不重要) 问题是,处理每个项并不需要很长时间,所以我的代码大约有一半的时间都花在item.Bind()上。这可

有人知道在一次EWS调用中使用EWS管理的API绑定多个项目的方法吗?只需给出相关项目的ItemID

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

  • 反复调用ExchangeService.FindItems()以生成可能非常大的项目列表(数十万或更多)
  • 将ItemID存储在数据库中(作为字符串)
  • 从数据库中依次读取每个ItemId,使用item.bind()绑定到该项并对其进行处理(处理的细节不重要)
问题是,处理每个项并不需要很长时间,所以我的代码大约有一半的时间都花在item.Bind()上。这可能也不会让Exchange邮箱服务器非常高兴,因为它必须满足不断涌现的小查询。在我看来,将请求“成批”起来,一次加载大约100个项目的属性,效率要高得多

现在,我肯定你在问-为什么不跳过数据库,在每次FindItems()调用之后调用ExchangeService.LoadPropertiesForItems()?好。。。有一个明确的可能性,这件事将停止之前,它完成处理所有的项目。当它再次启动时(可能几个小时或几天后),它需要能够从停止的点恢复。使用FindItems()的代码非常复杂,要想知道如何保存其状态以备以后恢复,简直是一场噩梦

我发现,这解释了LoadPropertiesForItems()在幕后使用EWS GetItem调用。它确实接受ItemID列表,但该功能似乎没有通过托管API公开(LoadPropertiesForItems()需要已绑定项对象的列表,而不仅仅是ItemID)

所以有几个问题是真的:

  • 我错过什么了吗?在EWS管理的API中是否有一种方法可以满足我的要求
  • 如果没有,一旦我有了一个托管API会话,有没有一种方法可以“背驮”一个原始的EWS SOAP调用,而不必经历所有的身份验证等。同样,这是一种困难的方法
  • 我只是以某种惊人的方式做错了吗?:-)
    这就是你要找的。

    该死,我怎么会错过这个?!非常感谢。