在发生定期约会时使用RemoveExtendedProperty会引发错误

时间:2012-06-21 19:27:06

标签: c# exchangewebservices recurring ews-managed-api

我正在开发一个将交换日历同步到另一个日历的应用程序。我在交换约会上放置了扩展属性,以便保留两个日历中约会之间的映射。一切正常,直到我尝试从定期约会的发生中删除扩展属性。当我尝试这样做时,我收到错误:

The delete action is not supported for this property.

以下是演示错误的代码段:

public void ExchangeTest()
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1)
    {
        Credentials = new NetworkCredential("username", "password", "domain")
    };
    service.AutodiscoverUrl("username@domain.com");

    Appointment appt = new Appointment(service)
    {
        Recurrence = new Recurrence.DailyPattern(DateTime.Now, 2) { NumberOfOccurrences = 3},
        Start = DateTime.Now,
        End = DateTime.Now.AddHours(2),
        Subject = "Test Appointment"
    };
    NameResolutionCollection resolutionCollection = service.ResolveName("username", ResolveNameSearchLocation.DirectoryOnly, false);
    string mailboxAddress = resolutionCollection.First().Mailbox.Address;
    FolderId folderId = new FolderId(WellKnownFolderName.Calendar, mailboxAddress);
    appt.Save(folderId);
    PropertySet properties = new PropertySet(AppointmentSchema.ICalUid);
    appt.Load(properties);

    CalendarView view = new CalendarView(DateTime.Today, DateTime.Today.AddDays(8)){PropertySet = properties};

    IEnumerable<Appointment> occurrences = service.FindAppointments(folderId, view)
        .Where(a => a.ICalUid == appt.ICalUid);

    ExtendedPropertyDefinition definition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "TestProperty", MapiPropertyType.String);
    Appointment firstOccurrence = occurrences.First();
    firstOccurrence.SetExtendedProperty(definition, "test");
    firstOccurrence.Update(ConflictResolutionMode.AutoResolve);

    //The error occurs on the next line.
    firstOccurrence.RemoveExtendedProperty(definition);
    firstOccurrence.Update(ConflictResolutionMode.AutoResolve);

    //clean up
    appt.Delete(DeleteMode.HardDelete);
}

似乎只为Exchange 2007服务器抛出错误(它适用于2010)。我做错了什么,或者这是Exchange的问题?有办法解决这个问题吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

我最终没有使用 RemoveExtendedProperty 功能。相反,我通过再次设置属性,但将其设置为空白空间来解决它。然后我在代码中处理了空白区域。这似乎是Exchange或托管API的问题。

答案 1 :(得分:0)

你有没有尝试过;

appointment.Delete(DeleteMode.SoftDelete,SendCancellationsMode.SendToAllAndSaveCopy);