Получение встреч по обмену через ICalUid?

Итак, я создаю встречи Exchange (2007) с заданным ICalUid:

var app = new Appointment(svc);
app.ICalUid = id;
app.Subject = "Test Appointment";
app.Recurrence = new Recurrence.DailyPattern(DateTime.Now, 3);
app.RequiredAttendees.Add("[email protected]");
app.AllowNewTimeProposal = false;
app.Body = new MessageBody(BodyType.HTML, "This is a <b>Test!</b>");
app.Save();

Позже я хотел бы обновить эту встречу, после чего мне нужно найти ее через ICalUid.

Однако, кажется, нет никакого способа сделать это? Я могу использовать Appointment.Bind только для Exchange ID, которого у меня нет на момент обновления (хранить его крайне нецелесообразно)

Я могу создать новую встречу с тем же ICalUid, который, кажется, ведет себя как обновление, но снова просит принять/отклонить вместо того, чтобы просто отображать «Обновление не требуется».

Есть ли правильный способ сделать это?


person Michael Stum    schedule 14.07.2012    source источник


Ответы (3)


Вы можете использовать ExchangeService.FindItems для поиска Appointment с помощью ICalUid — см. пример ниже. Однако обратите внимание, что у него есть проблема с поиском повторяющихся встреч.

Видеть:

Жаль, что вы не используете Exchange 2010, так как в управляемом API EWS 1.1.5 есть getICalUID().

Вот некоторые другие ссылки, которые могут позволить вам получить более удовлетворительное решение.

person Colin Smith    schedule 17.07.2012
comment
Спасибо, похоже, это не находит его, даже если я удаляю повторение :( В каком формате должен быть ICalUid? Раньше я использовал Guid, но это вызывает исключение в методе GetObjectIdStringFromUid. Использование шестнадцатеричного строка типа 012345 не генерирует исключение, но и не находит встречу. - person Michael Stum; 17.07.2012
comment
Я думаю, вам нужно закодировать его как Base64 - это упоминается в одной из ссылок. b942-27c1e87f4440" rel="nofollow noreferrer">social.technet.microsoft.com/Forums/en/exchangesvrdevelopment/ - person Colin Smith; 17.07.2012
comment
Это тоже не работает :( Глядя с OutlookSpy, я также не вижу iCalUid ни в одном из полей, но это не должно иметь большого значения. Тем не менее, Exchange, похоже, не находит его. - person Michael Stum; 20.07.2012
comment
Не могли бы вы немного расширить код примера? например покажите нам, как выглядит ваш идентификатор .... вы каждый раз генерируете уникальный GUID на лету? Используете ли вы строку GUID, содержащую тире? или ты их снимаешь? Возможно, вам следует указать только шестнадцатеричные коды для идентификатора при создании встречи, например. 000C020304 и т.д. Наконец, взгляните на это....d-push.sourcearchive .com/documentation/1.5.3-1/ .... может дать некоторые подсказки. - person Colin Smith; 20.07.2012
comment
Вот альтернативный пример, который делает FindItems. archive.cnblogs.com/a/2173625 - person Colin Smith; 20.07.2012
comment
И последняя ссылка: infini-tec.de/post/2009/04/13/ - person Colin Smith; 20.07.2012

проверьте два FindAppointments метода ExchangeService

http://msdn.microsoft.com/en-us/library/dd635918(v=exchg.80)

http://msdn.microsoft.com/en-us/library/dd633767(v=exchg.80)

person zeFrenchy    schedule 21.07.2012
comment
Похоже, что нет никакого способа указать фильтр для iCal UID (или что-то еще) - person Michael Stum; 22.07.2012
comment
Да, единственный доступный метод поиска - по диапазону дат. Какая контекстная информация о встрече у вас есть, когда вам нужно сделать обновление? Не могли бы вы выполнить поиск по дате, а затем просмотреть результаты, пока не найдете свой идентификатор? Не здорово, я знаю. - person zeFrenchy; 22.07.2012

Не похоже, что в 2007 году вообще есть выход.

person Michael Stum    schedule 22.07.2012