API administrada de servicios web de Exchange – Buscar elementos por propiedades extendidas

He intentado usar propiedades extendidas en citas con EWS, pero parece que no puedo volver a encontrar las citas. La parte de la propiedad establecida es igual a la que se muestra en esta pregunta:

Cómo actualizar una cita de la API administrada del servicio web de Exchange 2.0 en ASP.NET

Cuando bash recuperar la cita, he seguido estos ejemplos:

http://msdn.microsoft.com/en-us/uc14trainingcourse_5l_topic3#_Toc254008129 http://msdn.microsoft.com/en-us/library/exchange/dd633697(v=exchg.80).aspx

Pero nunca me devuelven ninguna cita cuando hago una búsqueda.

Aquí está el código para la búsqueda:

ItemView view = new ItemView(10); // Get the GUID for the property set. Guid MyPropertySetId = new Guid("{" + cGuid + "}"); // Create a definition for the extended property. ExtendedPropertyDefinition extendedPropertyDefinition = new ExtendedPropertyDefinition(MyPropertySetId, "AppointmentID", MapiPropertyType.String); view.PropertySet = new PropertySet( BasePropertySet.IdOnly, ItemSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End, extendedPropertyDefinition); SearchFilter filter = new SearchFilter.Exists(extendedPropertyDefinition); FindItemsResults findResults = service.FindItems(WellKnownFolderName.Inbox, filter, view); 

Cualquier ayuda es muy apreciada.

Editar: Cuando bash crear la propiedad como muestra la documentación:

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

Falla porque es un Guid im add como valor de propiedad. : – /

Edite de nuevo: solo intenté obtener todas las citas de hoy y obtener la propiedad de la cita que acabo de crear, y dice lo mismo que almacené, sin el {}, por lo que debe haber algo con el filtro.

Editar una vez más * Tiene algo que ver con

  ExtendedPropertyDefinition extendedProperty = new ExtendedPropertyDefinition( 

si yo uso:

  new ExtendedPropertyDefinition( DefaultExtendedPropertySet.Appointment, "AppointmentID", MapiPropertyType.String); 

Encuentra todas las citas con propiedades, pero si busco una específica:

  Guid MyPropertySetId = new Guid("{" + cGuid + "}"); ExtendedPropertyDefinition extendedProperty = new ExtendedPropertyDefinition( MyPropertySetId, "AppointmentID", MapiPropertyType.String); 

Entonces no se encuentra nada.

Aquí hay un código de muestra de cómo crear una cita con el customid y encontrarla después de guardar:

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); service.AutodiscoverUrl("someone@somewhere.com"); ExtendedPropertyDefinition def = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "AppointmenId", MapiPropertyType.String); Guid testid = Guid.NewGuid (); Appointment appointment = new Appointment(service); appointment.Subject = "Test"; appointment.Start = DateTime.Now.AddHours(1); appointment.End = DateTime.Now.AddHours(2); appointment.SetExtendedProperty(def, testid.ToString()); appointment.Save(WellKnownFolderName.Calendar); SearchFilter filter = new SearchFilter.IsEqualTo(def, testid.ToString()); FindItemsResults fir = service.FindItems(WellKnownFolderName.Calendar, filter, new ItemView(10)); 

Espero que esto te ayude…

Usted busca en la bandeja de entrada para las citas. Allí nunca los encontrarás. Intenta buscar en el calendario en su lugar.

Este es un ejemplo de cómo colocar el guid como propiedad de extensión y obtener la cita basada en el guid.

 private static readonly PropertyDefinitionBase AppointementIdPropertyDefinition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "AppointmentID", MapiPropertyType.String); public static PropertySet PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointementIdPropertyDefinition); //Setting the property for the appointment public static void SetGuidForAppointement(Appointment appointment) { try { appointment.SetExtendedProperty((ExtendedPropertyDefinition)AppointementIdPropertyDefinition, Guid.NewGuid().ToString()); appointment.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToNone); } catch (Exception ex) { // logging the exception } } //Getting the property for the appointment public static string GetGuidForAppointement(Appointment appointment) { var result = ""; try { appointment.Load(PropertySet); foreach (var extendedProperty in appointment.ExtendedProperties) { if (extendedProperty.PropertyDefinition.Name == "AppointmentID") { result = extendedProperty.Value.ToString(); } } } catch (Exception ex) { // logging the exception } return result; }