【问题标题】:Batch Contact creation/update with contact photo使用联系人照片批量创建/更新联系人
【发布时间】:2017-03-14 09:39:33
【问题描述】:

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

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

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 调用或提高性能?

【问题讨论】:

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


    【解决方案1】:

    没有什么可以用来批量创建附件,但是当你说 500 * 500 个联系人时,你是在 500 个不同的邮箱中创建 500 个联系人。也就是说,您在每个不同的邮箱中创建了相同的 500 个联系人?如果是这种情况,最快的方法是在主邮箱中创建一次联系人,然后将联系人复制到每个目标邮箱中。如果您批量处理所有内容,则添加附件应该会产生最佳效果。

    【讨论】:

    • 有没有办法一次复制多个联系人?还是您的意思是为每个联系人调用副本?
    • 当然可以批量复制项目,我可能将其限制为每批 50-100 个,否则您可能会超时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多