Я пытаюсь запросить 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);