Soap EWS FindItem CalendarView对MaxEntriesReturned的奇怪处理

Soap EWS FindItem CalendarView对MaxEntriesReturned的奇怪处理,soap,exchangewebservices,Soap,Exchangewebservices,这是我的SOAP FindItem调用,用于检索日历项: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages"

这是我的SOAP FindItem调用,用于检索日历项:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
   <soapenv:Header>
      <typ:RequestServerVersion Version="Exchange2007_SP1"/>
      <typ:MailboxCulture>en-US</typ:MailboxCulture>
      <typ:TimeZoneContext>
        <typ:TimeZoneDefinition Id="W. Europe Standard Time"/>
      </typ:TimeZoneContext>
   </soapenv:Header>
   <soapenv:Body>
      <mes:FindItem Traversal="Shallow">
         <mes:ItemShape>
            <typ:BaseShape>AllProperties</typ:BaseShape>
            <typ:AdditionalProperties>
              <typ:FieldURI FieldURI="item:LastModifiedTime" />
            </typ:AdditionalProperties>
         </mes:ItemShape>
         <mes:CalendarView MaxEntriesReturned="1000" StartDate="2015-02-18T00:00:00Z" EndDate="2015-12-05T23:59:59Z"/>
         <mes:ParentFolderIds>
           <typ:DistinguishedFolderId Id="calendar">
             <typ:Mailbox>
               <typ:EmailAddress>sddress@server.nl</typ:EmailAddress>
             </typ:Mailbox>
           </typ:DistinguishedFolderId>
        </mes:ParentFolderIds>
      </mes:FindItem>
   </soapenv:Body>
</soapenv:Envelope>

我不满足于等待答案,我不断地挖掘,终于找到了答案

这就解释了问题2)

文章说,如果调用的RequestServerVersion早于Exchange2010,您将收到错误代码为ErrorServerBusy的失败响应

这正是我正在做的:
。将其更改为
将返回:

<m:FindItemResponseMessage ResponseClass="Error">
   <m:MessageText>You have exceeded the maximum number of objects that can be returned for the find operation. Use paging to reduce the result size and try your request again.</m:MessageText>
   <m:ResponseCode>ErrorExceededFindCountLimit</m:ResponseCode>
   <m:DescriptiveLinkKey>0</m:DescriptiveLinkKey>
   <m:MessageXml>
      <t:Value Name="PolicyLimit">1000</t:Value>
   </m:MessageXml>
</m:FindItemResponseMessage>

您已超过查找操作可返回的最大对象数。使用分页减少结果大小,然后重试请求。
错误超出了indcountlimit
0
1000
。。。很好地告诉我,我打破的上限是1000


这篇文章的结论是:这个故事的寓意是:在调用FindItem或FindFolder时,始终使用分页机制。我不满足于等待答案,而是不断地挖掘和发现

这就解释了问题2)

文章说,如果调用的RequestServerVersion早于Exchange2010,您将收到错误代码为ErrorServerBusy的失败响应

这正是我正在做的:
。将其更改为
将返回:

<m:FindItemResponseMessage ResponseClass="Error">
   <m:MessageText>You have exceeded the maximum number of objects that can be returned for the find operation. Use paging to reduce the result size and try your request again.</m:MessageText>
   <m:ResponseCode>ErrorExceededFindCountLimit</m:ResponseCode>
   <m:DescriptiveLinkKey>0</m:DescriptiveLinkKey>
   <m:MessageXml>
      <t:Value Name="PolicyLimit">1000</t:Value>
   </m:MessageXml>
</m:FindItemResponseMessage>

您已超过查找操作可返回的最大对象数。使用分页减少结果大小,然后重试请求。
错误超出了indcountlimit
0
1000
。。。很好地告诉我,我打破的上限是1000


文章的结论是:这个故事的寓意是:在调用FindItem或FindFolder时,始终使用分页机制。CalenderView无法分页。例如,看看,您会发现没有允许您指定偏移量(或索引)值的属性

你需要做的是缩短时间窗口,这样你得到的物品少于1000件。然后自己手动分页时间窗口,以获取所需的完整约会列表

干杯
Glen

CalenderView无法翻页,例如,请查看,您将看到没有允许您指定偏移(或索引)值的属性

你需要做的是缩短时间窗口,这样你得到的物品少于1000件。然后自己手动分页时间窗口,以获取所需的完整约会列表

干杯
Glen

FindItem
响应中的
TotalItemsView
属性对应于整个日历视图中的total项目数。如果查看返回的项目的实际数量,则生成的数据集仍将由集合
MaxEntriesReturned
绑定


因此,例如,如果我将我知道的日期范围总共有4个事件的
MaxEntriesReturned
设置为1,我将返回:
FindItem
响应中的
TotalItemsView
属性对应于整个CalendarView中的total项目数。如果查看返回的项目的实际数量,则生成的数据集仍将由集合
MaxEntriesReturned
绑定


例如,如果我将我知道的总共有4个事件的日期范围的
MaxEntriesReturned
设置为1,我将返回:
对不起,我没有得到这个。它有一个MaxEntriesReturned。我将其与StartDate一起指定(以防止被错误击中)。我得到了不止一个includeLastItemInRange=false的MaxEntriesReturned条目,因此似乎应用了一些限制。我用一个新的StartDate实现我自己的分页机制,只要includeLastItemInRange=false。对不起,我不明白这个。它有一个MaxEntriesReturned。我将其与StartDate一起指定(以防止被错误击中)。我得到了不止一个includeLastItemInRange=false的MaxEntriesReturned条目,因此似乎应用了一些限制。只要includeLastItemInRange=false,我就用新的StartDate实现自己的分页机制,并进行后续调用。
<ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="516" MinorBuildNumber="29" Version="Exchange2013"  .../>
<m:FindItemResponseMessage ResponseClass="Error">
   <m:MessageText>You have exceeded the maximum number of objects that can be returned for the find operation. Use paging to reduce the result size and try your request again.</m:MessageText>
   <m:ResponseCode>ErrorExceededFindCountLimit</m:ResponseCode>
   <m:DescriptiveLinkKey>0</m:DescriptiveLinkKey>
   <m:MessageXml>
      <t:Value Name="PolicyLimit">1000</t:Value>
   </m:MessageXml>
</m:FindItemResponseMessage>