Exchange Server 2007 SP3 で EWS マネージ API 2.0 を使用しているときに、奇妙な問題に直面しています。
予定を作成して保存すると、次のコードを使用してその ID を取得します。
appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
appointment.Id.UniqueId;
ローカル DB に保存して、後で会議の更新やキャンセルに使用できるようにします。
後で競合する会議を取得したい場合は、次のコードを使用します。
CalendarView view = new CalendarView(Start, End);
view.PropertySet = new PropertySet();
Folder rootfolder = Folder.Bind(service, WellKnownFolderName.Calendar);
//view.PropertySet.Add(AppointmentSchema.Resources);
view.PropertySet.Add(ItemSchema.Id);
view.PropertySet.Add(AppointmentSchema.Subject);
view.PropertySet.Add(AppointmentSchema.Start);
view.PropertySet.Add(AppointmentSchema.Duration);
view.PropertySet.Add(AppointmentSchema.End);
view.PropertySet.Add(AppointmentSchema.Organizer);
view.PropertySet.Add(AppointmentSchema.Id);
Mailbox mailbox = new Mailbox(Email);
FolderId id = new FolderId(WellKnownFolderName.Calendar, mailbox);
CalendarFolder folder = CalendarFolder.Bind(service, id);
FindItemsResults<Appointment> findResults = folder.FindAppointments(view);
//Iterating through the conflicting meetings returned by folder.FindAppointments
foreach (Appointment app in findResults.Items)
{
appts.Rows.Add(app.Subject, app.Start, app.End, app.Duration, app.Id.UniqueId);
}
競合する会議の 1 つの ID にアクセスしたい場合、他のすべての情報は同じですが、ローカル DB にある ID とは異なります。自分の ID を使用して予定にバインドすることはできますが、問題は、同じ会議に 2 つの異なる ID があることです。EWS が予定の一意の ID を保存しない理由と (appointment.Id.UniqueId) が定数ではないのはなぜですか?
この問題の明確な解決策は見つかりませんでした。