我尝试使用空字符串更新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但它的效果相同。 我究竟做错了什么?
答案 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