0

我有一个应用程序,它使用 EWS API 跟踪 Exchange 中的约会。使用属性 .ItemId 是不好的,因为虽然它是唯一的,但它可能会改变(Exchange Web 服务:为什么 ItemId 不是恒定的?[续])。对于跟踪项目,这是一个糟糕的情况。因此我使用属性 Appointment.ICalUid。

这个属性也不总是看起来一样,据我所知,它会以某种方式发生变化。我已经记录了一些更改。首先使用以下 .ICalUID 创建一条记录:

5fc22493-7212-4c44-9cd6-971c3bae28af

然后下次我在 Exchange 中查找记录时,相同的项目会返回另一个 .ICalUID:

040000008200E00074C5B7101A82E00800000000F01883C1D49AD101000000000000000010000000C321E8A40C6DE948836C422E2DA8610C

为什么我首先返回一个 36 个字符的字符串,然后返回一个 190 个字符长的字符串?为什么这个值会改变?

编辑:短 ID 是在使用连接到 Exchange Server 的 Android 手机时创建的,而长 ID 是使用带有 Outlook 2013 的 Windows 10 上的 Outlook 创建的。但它会以某种方式改变吗?

4

1 回答 1

1

这是因为 iCal 的 RFC 没有定义 Uid https://www.rfc-editor.org/rfc/rfc5545的格式或长度,只是它必须是全球唯一的。这意味着它取决于实施者,例如有些人使用 guid,有些人使用 guid 和域等。Exchange/Outlook 使用 GOID 格式,特别是 PidLidCleanGlobalObjectId https://msdn.microsoft.com/en-us/library/office/cc839502 .aspx和 PidLidGlobalObjectId https://msdn.microsoft.com/en-us/library/office/cc815676.aspx(通常由 Exchange 服务器在创建约会时生成)。

因此,您应该期待不同的格式,我通常建议您使用 PidLidCleanGlobalObjectId 扩展属性而不是 icaluid 属性,因为这将始终返回一致,因为一旦其设置 Exchange 将永远不会更改此属性,在某些情况下强类型属性可能不一致,例如您看到。(作为一般规则,它应该返回 GOID)。

干杯格伦

于 2016-04-21T01:06:28.100 回答