【问题标题】:Why differs the ICalUid in length?为什么 ICalUid 的长度不同?
【发布时间】:2016-04-21 09:06:28
【问题描述】:

我有一个应用程序,它使用 EWS API 跟踪 Exchange 中的约会。使用属性 .ItemId 是不好的,因为虽然它是独一无二的,但它很可能会改变 (Exchange web services: why is ItemId not constant? [continued])。对于跟踪项目,这是一个糟糕的情况。因此我使用属性 Appointment.ICalUid。

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

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

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

040000008200E00074C5B7101A82E00800000000F01883C1D49AD101000000000000000010000000C321E8A40C6DE948836C422E2DA8610C

为什么我一开始返回一个 36 个字符的字符串,后来又返回一个 190 个字符长的字符串?为什么这个值会改变?

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

【问题讨论】:

  • 你能显示你检索值的代码吗
  • 是的,但我想这并不奇怪:ExchangeService.FindItems(WellKnownFolderName.Calendar, searchFilter, iv),其中 searchFilter 是一个日期范围,而 ItemView iv = new ItemView(1000); iv.ProperytSet 包含一些基本属性和 AppointmentSchema.ICalUid

标签: c# exchangewebservices icalendar exchange-server-2013


【解决方案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)。

干杯 格伦

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 2014-03-30
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2021-06-01
    • 2013-10-31
    相关资源
    最近更新 更多