【问题标题】:EWS : Appoitnment Item.Id.UniqueId is not constantEWS:Appoitnment Item.Id.UniqueId 不是常量
【发布时间】:2013-06-05 08:22:58
【问题描述】:

在将 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) 不是恒定的?

我没有为这个问题找到明确的解决方案。

【问题讨论】:

    标签: .net outlook exchangewebservices exchange-server-2007


    【解决方案1】:

    约会本身没有不变的唯一ID,但约会具有ICalUid属性(我认为它的唯一日历项ID):

    appointment.ICalUid;
    

    这是真正独特的,不会改变,然后根据我的测试更新会议。我为一个人生成了 1000 次会议,并且所有 ICalUid 都是唯一的。试试吧,它对我有帮助:)

    【讨论】:

    • 您是否知道从 EWS 获取 IcalUid 的 XML 肥皂代码是什么?
    【解决方案2】:

    这实际上是使用 EWS 托管 API 的人面临的一个非常普遍的问题。
    出于某种原因(我不知道为什么),将约会移动到另一个文件夹时,唯一 ID 会发生变化。
    您可以在我的帖子中找到您的问题和答案:
    Exchange web services: why is ItemId not constant? [continued]

    【讨论】:

      【解决方案3】:

      请记住,Outlook 在处理传入的日历更新时会重新创建约会。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-13
        • 2020-10-18
        • 1970-01-01
        • 2011-11-15
        • 1970-01-01
        相关资源
        最近更新 更多