Почему EWS Managed API SyncFolderItems не возвращает повторяющиеся встречи - PullRequest
4 голосов
/ 25 мая 2011

Я использую управляемый API EWS для синхронизации приложения планирования с календарями обмена.У меня все нормальные встречи в порядке, но я не получаю повторяющихся / повторяющихся встреч.

Мой код соответствует:

itemChangeCollection = _service.SyncFolderItems(
                            new FolderId(WellKnownFolderName.Calendar,
                                         new Mailbox(Email)),
                            propertySet,
                            null,
                            Settings.Default.ExchangeSyncFetchCount,
                            SyncFolderItemsScope.NormalItems,
                            syncState);

Что мне нужно изменить, чтобы увидеть повторяющиеся встречи

Ответы [ 3 ]

3 голосов
/ 27 июня 2011

Случаи повторяющихся встреч не являются "настоящими" предметами в магазине. Они являются виртуальными в том смысле, что они рассчитываются всякий раз, когда вы выполняете поиск с использованием календаря и таймфрейма.

Единственный способ найти повторяющиеся встречи - использовать метод FindItems.

1 голос
/ 24 ноября 2016

SyncFolderItems возвращает только необходимую информацию для восстановления повторяющейся серии, но не расширяет отдельные случаи.Если вам нужны расширенные вхождения, вам нужно использовать метод FindItems.

Однако, даже если вы можете расширить повторение самостоятельно, только SyncFolderItems не предоставляет всю необходимую информацию.

SyncFolderItems вернет список событий с Single или RecurringMaster AppointmentType.Событие RecurringMaster содержит свойства ModifiedOccurrences и DeletedOccurrences.К сожалению, элементы в ModifiedOccurrences содержат только ItemId, но не сам Item.Кажется необходимым решить все исключения отдельно, чтобы получить поля измененных вхождений.Из документации :

Каждый объект OccurrenceInfo в коллекции ModifiedOccurrence содержит четыре свойства: End , ItemId , OriginalStart и Start .Чтобы получить доступ к дополнительным свойствам элемента исключения, необходимо связать элемент с помощью OccurrenceInfo.ItemId .

foreach (OccurrenceInfo item in recurringMasterItem.ModifiedOccurrences)
{
   Appointment modifiedItem = Appointment.Bind(service, item.ItemId);
   Console.WriteLine("Subject: " + modifiedItem.Subject);
}

Другими словами, с данными, полученными изSyncFolderItem вы можете расширить повторение, включая исключения времени и удаленные вхождения, но вам придется разрешать исключения в других полях (например, сводка, тело, местоположение и т. Д.) С помощью дополнительных вызовов .Bind().

0 голосов
/ 30 сентября 2016

SyncFolderItems даст вам повторяющиеся мастер-элементы, но не расширит их в вхождения.Повторяющийся мастер содержит общие свойства для всех элементов, повторяющийся шаблон и список исключений и удалений.Это вся информация, необходимая для расширения их до появления.Хотя вы должны вызывать Appointment.BindToOccurrence, чтобы связать свойства для отдельного вхождения от повторяющегося мастера на основе индекса вхождения.Недостатком является то, что это делает вызов EWS для каждого вхождения.

...