1

J'utilise l'API gérée par EWS pour créer et mettre à jour des contacts sur le serveur Exchange.Création/mise à jour par contact avec la photo de contact

Je crée un contact comme celui-ci (où l'utilisateur est un objet principal Active Directory avec des propriétés personnalisées):

Contact addContact = new Contact(service); 
exchangeContact.NickName = GenerateNickName(user); 
exchangeContact.DisplayName = exchangeContact.NickName; 
exchangeContact.FileAs = user.DisplayName; 
... 
exchangeContact.PhoneNumbers[PhoneNumberKey.BusinessPhone] = user.Phone; 
exchangeContact.PhoneNumbers[PhoneNumberKey.MobilePhone] = user.MobilePhone; 

ExtendedPropertyDefinition adGuidPropDef = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "ADGUID", MapiPropertyType.String); 

exchangeContact.SetExtendedProperty(adGuidPropDef, user.Guid.ToString()); 

if (user.ThumbnailPhoto != null) 
{ 
    exchangeContact.SetContactPicture(user.ThumbnailPhoto); 
} 

exchangeContact.Save(parentFolderId); 

Cette partie de code est appelé à environ 500 * 500 contacts, et il prend trop longue. Je cherche à améliorer sa performance. J'ai essayé d'utiliser le batch create/update methods mais j'ai découvert qu'ils ne supportent pas les "pièces jointes", et qu'une photo de contact est une pièce jointe.

Existe-t-il un autre moyen d'abaisser les appels EWS ou d'améliorer les performances dans le cas contraire?

Répondre

0

Vous ne pouvez pas utiliser la création de pièces jointes en batch, mais lorsque vous indiquez 500 * 500 contacts, vous créez 500 contacts dans 500 boîtes aux lettres différentes. C'est-à-dire que vous créez les mêmes 500 contacts dans chacune de ces différentes boîtes aux lettres? Si c'est le cas, le moyen le plus rapide serait de créer le contact une fois dans une boîte aux lettres principale, puis de copier le contact dans chacune des boîtes aux lettres cibles. Si vous ajoutez tout ce qui barre, ajoutez les pièces jointes qui devraient donner le meilleur résultat.

+0

Existe-t-il un moyen de copier plusieurs contacts à la fois? Ou voulez-vous appeler une copie pour chaque contact? –

+0

Bien sûr, vous pouvez copier par lots l'élément que je limiterais probablement à 50-100 par lot ou vous pourriez obtenir des délais d'attente. –