Office365 EWS。更新它们。为什么';你不能换钥匙吗?

Office365 EWS。更新它们。为什么';你不能换钥匙吗?,office365,exchange-server,exchangewebservices,Office365,Exchange Server,Exchangewebservices,在EWSItemId中,标记具有ChangeKey属性。以下是Exchange文档对此属性的说明: 在Exchange中处理项目时,另一个要记住的值是ChangeKey属性。除项目ID外,此值还用于跟踪项目的状态。任何时候更改项目时,都会生成一个新的更改密钥 因此,在我的应用程序中,我正在执行UpdateItem操作。这是我发送到服务器的XML: <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="

在EWS
ItemId
中,标记具有
ChangeKey
属性。以下是Exchange文档对此属性的说明:

在Exchange中处理项目时,另一个要记住的值是ChangeKey属性。除项目ID外,此值还用于跟踪项目的状态。任何时候更改项目时,都会生成一个新的更改密钥

因此,在我的应用程序中,我正在执行
UpdateItem
操作。这是我发送到服务器的XML:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Header>
  <t:RequestServerVersion Version="Exchange2007_SP1" />
</soap:Header>
<soap:Body>
  <m:UpdateItem xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" MessageDisposition="SaveOnly" ConflictResolution="AlwaysOverwrite" SendMeetingInvitationsOrCancellations="SendToNone">
     <m:ItemChanges>
        <t:ItemChange>
           <t:ItemId Id="AAMkADE3MTJkZWNlLTZiYWYtNDY4Yi1hNmM3LWU2MzY2ZDZjYWNhMQBGAAAAAACoXti5FFu8TJNLLS5k9vC8BwAcJDq8WkSCQ77jdOtyazgnAAAAAAEMAAAcJDq8WkSCQ77jdOtyazgnAACOg4SZAAA=" ChangeKey="`CQAAAA==`" />
           <t:Updates>
              <t:SetItemField>
                 <t:FieldURI FieldURI="message:IsRead" />
                 <t:Message>
                    <t:IsRead>false</t:IsRead>
                 </t:Message>
              </t:SetItemField>
           </t:Updates>
        </t:ItemChange>
     </m:ItemChanges>
  </m:UpdateItem>
 </soap:Body>
</soap:Envelope>

如您所见,返回的更改密钥仍然是
CQAAAA==
。为什么没有更改?

从技术上讲,已读/未读状态不是消息本身的一部分;它是分开存放的。这就是在PF存储中实现每个用户消息状态的方式。文件夹


如果修改任何其他属性,则更改键将更改

然而,当我在创建消息后第一次更改已读/未读状态时,更改密钥确实会更改。是读取/未读取状态的后续更新使更改密钥保持不变。怎么了?我不知道。商店提供商可以自由调整其他属性。Exchange经常对新创建的邮件执行此操作。
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Header>
  <h:ServerVersionInfo xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" MajorVersion="15" MinorVersion="0" MajorBuildNumber="1365" MinorBuildNumber="1" Version="V2_23" />
</s:Header>
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <m:UpdateItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
     <m:ResponseMessages>
        <m:UpdateItemResponseMessage ResponseClass="Success">
           <m:ResponseCode>NoError</m:ResponseCode>
           <m:Items>
              <t:Message>
                 <t:ItemId Id="AAMkADE3MTJkZWNlLTZiYWYtNDY4Yi1hNmM3LWU2MzY2ZDZjYWNhMQBGAAAAAACoXti5FFu8TJNLLS5k9vC8BwAcJDq8WkSCQ77jdOtyazgnAAAAAAEMAAAcJDq8WkSCQ77jdOtyazgnAACOg4SZAAA=" ChangeKey="CQAAAA==" />
              </t:Message>
           </m:Items>
           <m:ConflictResults>
              <t:Count>0</t:Count>
           </m:ConflictResults>
        </m:UpdateItemResponseMessage>
      </m:ResponseMessages>
    </m:UpdateItemResponse>
 </s:Body>
</s:Envelope>