在将 EWS Managed API 2.0 与 Exchange Server 2007 SP3 一起使用时,我遇到了一个奇怪的问题。
当我创建约会并保存它时,我使用以下代码获取其 ID:
appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
appointment.Id.UniqueId;
我将其存储在本地数据库中,以便稍后使用它来更新会议或取消会议。
稍后,当我想检索冲突的会议时,我使用以下代码:
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);
}
当我想访问其中一个冲突会议的 ID 时,我发现它与本地数据库中的 ID 不同,尽管所有其他信息都相同。我仍然可以使用我的 ID 绑定约会,但问题是同一个会议现在有 2 个不同的 ID。为什么 EWS 不存储约会的唯一 ID 为什么 (appointment.Id.UniqueId) 不是常量?
我没有找到解决这个问题的明确解决方案。
约会本身没有不会改变的唯一ID,但约会有属性ICalUid(我认为它的唯一日历项目ID):
appointment.ICalUid;
这确实是独一无二的,并且不会改变,然后会议会根据我的测试进行更新。我为一个人生成了 1000 个会议,并且所有 ICalUid 都是唯一的。尝试一下,这对我有帮助:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)