我想从特定日期的定期主日历事件中检索事件(ItemID)(我有发生日期和重复主事件数据)。
我尝试使用像这样的限制的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"/>
</soapenv:Header>
<soapenv:Body>
<mes:FindItem Traversal="Shallow">
<mes:ItemShape>
<typ:BaseShape>AllProperties</typ:BaseShape>
</mes:ItemShape>
<mes:Restriction>
<typ:IsEqualTo>
<typ:FieldURI FieldURI="item:RecurringMasterItemId"/>
<typ:FieldURIOrConstant>
<typ:Constant Value="AQMkAD[snip]AAAAA=="/>
</typ:FieldURIOrConstant>
</typ:IsEqualTo>
</mes:Restriction>
<mes:ParentFolderIds>
<typ:DistinguishedFolderId Id="calendar"/>
</mes:ParentFolderIds>
</mes:FindItem>
</soapenv:Body>
</soapenv:Envelope>
但是这会返回:
'FieldURI'属性无效 - 值'item:RecurringMasterItemId'根据其数据类型无效(类型:UnindexedFieldURIType) - 枚举约束失败。
(我也知道定期约会的ChangeKey并尝试了相同的错误)
如何修复它以使其有效?
顺便说一句。我知道用GetItem检索出现的事情如下:
<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"/>
</soapenv:Header>
<soapenv:Body>
<mes:GetItem>
<mes:ItemShape>
<typ:BaseShape>IdOnly</typ:BaseShape>
</mes:ItemShape>
<mes:ItemIds>
<typ:OccurrenceItemId RecurringMasterId="AQMkAD[snip]AAAA==" InstanceIndex="1"/>
<typ:OccurrenceItemId RecurringMasterId="AQMkAD[snip]AAAA==" InstanceIndex="2"/>
<typ:OccurrenceItemId RecurringMasterId="AQMkAD[snip]AAAA==" InstanceIndex="3"/>
</mes:ItemIds>
</mes:GetItem>
</soapenv:Body>
</soapenv:Envelope>
然后,我可以检索StartDate并循环遍历它们,但是我无法预测可能适用的InstanceIndex范围。
提前致谢,
扬
答案 0 :(得分:0)
看起来这不可能。
我现在使用GetItem,一次检索50次。
这将返回包含以下内容的GetItemResponseMessages列表:
成功发生检索
ErrorCalendarOccurrenceIndexIsOutOfRecurrenceRange响应代码,表示我们已到达最后一次出现
其他“真实”错误
ErrorCalendarOccurrenceIsDeletedFromRecurrence响应代码,指示事件已被删除
所以我只是循环,直到找到正确的日期,达到ErrorCalendarOccurrenceIndexIsOutOfRecurrenceRange,或达到我的代码中设置的最大调用次数。