2016-04-20 5 views
0

У меня есть приложение, которое отслеживает встречи в Exchange с использованием API EWS. Использование свойства .ItemId плохо, потому что, хотя он уникален, он может измениться (Exchange web services: why is ItemId not constant? [continued]). Для отслеживания предметов это плохая ситуация. Поэтому я использую свойство Appointment.ICalUid.Почему отличается ICalUid в длину?

Это свойство также не всегда выглядит одинаково, и, насколько я могу судить, оно как-то меняется. Я внес некоторые изменения. В первую запись создается со следующими .ICalUID:

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

Тогда в следующий раз, когда я смотрю на записи в бирже тот же элемент возвращает другой .ICalUID:

040000008200E00074C5B7101A82E00800000000F01883C1D49AD101000000000000000010000000C321E8A40C6DE948836C422E2DA8610C 

Почему у меня в сначала строка, возвращаемая из 36 символов, а затем строка длиной в 190 символов? Почему меняется это значение?

Редактировать: Что такое короткий идентификатор создается при использовании телефона Android, подключенного к Exchange Server, а длинный идентификатор создается с помощью Outlook в Windows 10 с Outlook 2013. Но это как-то меняется?

+0

Можете ли вы показать код, где вы извлечения значения – stuartd

+0

Да, но это ничего не странно, я думаю: ExchangeService.FindItems (WellKnownFolderName.Calendar, searchFilter, IV), где searchFilter является диапазон дат , и ItemView iv = новый ItemView (1000); iv.ProperytSet содержит некоторые основные свойства и AppointmentSchema.ICalUid – renevondecafe

ответ

1

Это связано с тем, что RFC для iCal не определяет формат или длину UID https://tools.ietf.org/html/rfc5545 только в том, что он должен быть глобально уникальным. Это означает, что он недоступен для реализации, например, некоторые люди используют руководство, некоторые используют руководство и домен и т. Д. 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).

Приветствия Глен