2013-06-05 1 views
4

Il existe un problème étrange auquel je suis confronté lorsque je travaille avec EWS Managed API 2.0 avec Exchange Server 2007 SP3.EWS: Appoitnment Item.Id.UniqueId n'est pas constant

Lorsque je crée un rendez-vous et je l'enregistrer, je reçois son ID en utilisant le code suivant:

appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy); 

appointment.Id.UniqueId; 

et je stocker dans mon DB je peux utiliser plus tard locale pour mettre à jour la réunion ou annuler il.

Plus tard, quand je veux récupérer les réunions contradictoires que j'utilise le code suivant:

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); 
    } 

et quand je veux accéder à l'ID de l'une des réunions contradictoires que je trouve différent de l'ID que je l'ai dans ma base de données locale bien que toutes les autres informations soient les mêmes. Je peux toujours utiliser mon ID pour lier le rendez-vous, mais le problème est que la même réunion a maintenant 2 ID différents. Pourquoi EWS ne stocke pas d'identifiant unique pour les rendez-vous pourquoi et (rendez-vous.Id.UniqueId) n'est pas constant?

Je n'ai pas trouvé de solution claire à ce problème.

Répondre

3

C'est en fait un problème très commun rencontré par ceux qui utilisent l'API Managed EWS.
Pour une raison quelconque (je ne sais pas pourquoi), l'ID unique change lorsque le rendez-vous est déplacé vers un autre dossier.
Vous pouvez trouver votre question et votre réponse dans mon post ici:
Exchange web services: why is ItemId not constant? [continued]

0

Gardez à l'esprit que les rendez-vous d'Outlook reconstitue lorsqu'il traite des mises à jour de calendrier entrants.

4

Rendez-vous lui-même ne pas id unique qui ne marche pas le changement, mais la nomination a la propriété ICalUid (je pense que son id élément de calendrier unique):

appointment.ICalUid; 

qui est vraiment unique et ne change pas alors recontres mis à jour pour autant que j'ai testé .. j'ai généré 1000 réunions pour une personne et tous les ICalUid étaient uniques. Essayez-le, ça m'a aidé :)