Назад | Перейти на главную страницу

EWS: проверьте, отменена ли встреча в календаре

Я пытаюсь запросить EWS с помощью VB.Net, и я могу получить большинство атрибутов для встречи, которую я хочу, однако, когда я пытаюсь получить атрибут IsCancelled, возникает следующее исключение: This property was requested, but it wasn't returned by the server.

Может ли кто-нибудь посоветовать, есть ли проблемы с атрибутом IsCancelled (т.е. всегда ли он установлен на true или false)?

Наша среда является смешанной, EWS работает с Exchange 2007SP1, однако у нас есть серверы 2010 (обновление начнется через месяц или около того).

Может ли кто-нибудь указать мне на какие-либо ресурсы по всем атрибутам, доступным через EWS, список длинный, и я уверен, что есть и другие полезные жемчужины, на которые я еще не наткнулся.

Мы будем очень признательны за любые ресурсы по отслеживанию встреч в почтовых ящиках, настроенных как ресурсы (с использованием комнат в 2010 году, но еще не существующих), такие как отмененные и обновленные собрания.

Спасибо,

Мэтт

Согласно документация на недвижимость, это bool типа а не Nullable<bool> так что должен всегда что-нибудь возвращай.

Тот факт, что вы получаете This property was requested, but it wasn't returned by the server сообщение может предполагать, что вы запрашиваете неподходящее свойство для возвращаемого элемента (например, запрашиваете isCancelled собственность на EmailMessage тип.

Я бы сделал простую проверку работоспособности и убедился, что ваш список возвращенных товаров соответствует типу Appointment а не что-то другое.

Вы можете попробовать позвонить в FindAppointments метод ExchangeService класс, который будет искать исключительно элементы, являющиеся встречами, но лично у меня было несколько проблем с тем, что он не возвращал в точности то, что я ожидал. В итоге я позвонил FindItems<Appointment>(WellKnownFolderName.Calendar, new ItemView(1000)) и перебирая их.

После большого количества проб и ошибок я обнаружил, что вам также необходимо запросить AppointmentSchema.AppointmentState собственность, когда вы хотите AppointmentSchema.IsCancelled свойство.

Вот код, который у меня работает:

var calendarView = new CalendarView(startTime, endTime);
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(room.Email.Address));
calendarView.PropertySet = new PropertySet(
    // AppointmentState is required for IsCancelled to work
    AppointmentSchema.AppointmentState,
    AppointmentSchema.IsCancelled
);
var roomBookings = exchangeService.FindAppointments(folderId, calendarView);