我试图用一个空字符串更新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和字符串。空的,但效果是一样的。我做错了什么?
您确定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);
首先,可以一次更新多个属性。
其次,您可以尝试检查现有值是否与新值相同(如果是,请不要设置)。此外,如果值是空字符串,最好将其设置为null。
第三,找到你的联系人,获取物品ID,然后将新联系人绑定到该物品ID。
ItemId itemId = contact.Id;
Contact updateContact = Contact.Bind(service, itemId);
这可能会有所帮助。谁知道呢。API在更新项目时很难使用。
查看这个链接,我在那里放了很多关于使用EWS更新联系人的信息:使用EWS 更新联系人