gpt4 book ai didi

soap - EWS FindItem CalendarView 对 MaxEntriesReturned 的奇怪处理

转载 作者:行者123 更新时间:2023-12-02 04:22:53 26 4
gpt4 key购买 nike

这是我用于检索日历项目的 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><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1566717167706666556670676370673b7b79" rel="noreferrer noopener nofollow">[email protected]</a></typ:EmailAddress>
</typ:Mailbox>
</typ:DistinguishedFolderId>
</mes:ParentFolderIds>
</mes:FindItem>
</soapenv:Body>
</soapenv:Envelope>

可选元素中返回的MaxEntries

 <mes:CalendarView MaxEntriesReturned="1000" StartDate="2015-02-18T00:00:00Z" EndDate="2015-12-05T23:59:59Z"/>

应该意味着the maximum number of results to return in the FindItem response

但是:

1) 结果很容易返回更多项目:

<m:FindItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<m:ResponseMessages>
<m:FindItemResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:RootFolder TotalItemsInView="2516" IncludesLastItemInRange="false">
<t:Items>
<t:CalendarItem>

(注意 IncludesLastItemInRange="false",所以有更多项目。那为什么返回 2516?)

2) 如果我将 MaxEntriesReturned="1000" 排除在查询之外,我会收到带有文本的 ErrorServerBusy 响应代码 服务器无法正确处理此请求现在。稍后再试

这可能与Exchange Server throttling policies有关,但该链接显示:

The EWSFindCountLimit parameter specifies the maximum result size of FindItem or FindFolder calls that can exist in memory on the Client Access server at the same time for this user in this current process

所以我希望得到带有文本的 ErrorExceededFindCountLimit 响应代码您已经超出了查找操作可以返回的最大对象数。使用分页来减小结果大小并重试您的请求。

我对这些观察结果的疑问:

1) 我指定 MaxEntriesReturned 是为了防止被数据淹没,但我得到的比我要求的多得多。 (可以搭配冰淇淋,但这里不行)。

2) 如果我确实遇到了限制策略,我想要一个像样的 ErrorExceededFindCountLimit 响应来告诉我发生了什么,以便我的代码可以建议纠正措施; ErrorServerBusy 可能意味着很多事情。

对于两者可以做什么?

这都是针对发布到制造 (RTM) version of Exchange Server 2013 的测试:

<ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="516" MinorBuildNumber="29" Version="Exchange2013"  .../>

最佳答案

TotalItemsInView FindItem 中的属性响应对应于整个 CalendarView 中的项目数。生成的数据集仍将受集合 MaxEntriesReturned 的约束如果您查看退回的实际商品数量。

例如,如果我设置 MaxEntriesReturned为 1 表示我知道总共有 4 个事件的日期范围,我会返回:<m:RootFolder TotalItemsInView="4" IncludesLastItemInRange="false”> 。但回复中只有一个CalendarItem已返回。

[OP 添加的注释] 这解决了问题 ( item 2 is in this answer ) 的第 1) 项

关于soap - EWS FindItem CalendarView 对 MaxEntriesReturned 的奇怪处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29141834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com