如何在Exchange Web Api中更新联系人项目

时间:2012-02-28 10:45:49

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

我尝试使用空字符串更新EWS中的联系人属性但它失败了。我不明白为什么。

 // works fine
 contact.Company = "SomeCompany";
 contact.Update(ConflictResolutionMode.AlwaysOverwrite);

 // failed in Update with a service response exception
 contact.Company = "";
 contact.Update(ConflictResolutionMode.AlwaysOverwrite);

我尝试null和string.Empty但它的效果相同。 我究竟做错了什么?

2 个答案:

答案 0 :(得分:4)

您确定Contact类型上有Company个属性吗?我只看到CompanyName属性,可以通过以下方式更新而不会出现任何问题(至少在我尝试时):

var service = GetService();
var view = new ItemView(1);
var searchFilter = new SearchFilter.IsEqualTo(ContactSchema.EmailAddress1, "test@domain.dk");
var contacts = service.FindItems(WellKnownFolderName.Contacts, searchFilter, view);

var contact = contacts.ElementAt(0) as Contact;

// Works fine.
contact.CompanyName = "SomeCompany";
contact.Update(ConflictResolutionMode.AlwaysOverwrite);

// Works fine as well.
contact.CompanyName = "";
contact.Update(ConflictResolutionMode.AlwaysOverwrite);

答案 1 :(得分:0)

首先,您可以一次更新多个属性。

其次,您可以尝试检查现有值是否与新值相同(如果是,请不要设置它)。另外,如果值为空字符串,最好将其设置为null。

第三,找到您的联系人,获取项目ID,然后将新联系人绑定到该项目ID。

ItemId itemId = contact.Id;
Contact updateContact = Contact.Bind(service, itemId);

这可能会有所帮助。谁知道。更新项目时,API很难处理。

查看此链接,我已经提供了大量有关使用EWS更新联系人的信息: Updating a Contact with EWS