批量联系人创建/更新与联系人照片

时间:2017-03-14 09:39:34

标签: c# performance exchange-server exchangewebservices ews-managed-api

我正在使用EWS托管API在Exchange Server上创建和更新联系人。

我正在创建一个这样的联系人(其中user是具有一些自定义属性的Active Directory Principal对象):

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

这个代码部分被调用大约500 * 500个联系人,这需要太长时间。我希望改善其性能。我尝试使用batch create/update methods,但我发现他们不支持"附件",并且联系人照片是附件。

在这种情况下,是否有其他方法可以降低EWS呼叫或改善性能?

1 个答案:

答案 0 :(得分:0)

您无法使用任何内容批量创建附件,但当您说500 * 500个联系人时,您在500个不同的邮箱中创建了500个联系人。也就是说你在每个不同的邮箱中创建相同的500个联系人?如果是这种情况,最快的方法是在主邮箱中创建一次联系人,然后将联系人复制到每个目标邮箱。如果您批量处理一切,请添加应该提供最佳结果的附件。