Я изо всех сил пытаюсь переименовать ContactsGroup в Outlook, используя API EWS. У меня есть способ переименовать группу:
public bool ChangeGroupName(string oldGroupName, string newGroupName)
{
bool result = false;
var folder = FindFolderByName(_folderName);
if (folder == null)
{
return true;
}
ContactGroup group = FindGroupByName(oldGroupName, folder.Id);
if (group != null)
{
group.DisplayName = newGroupName;
group.Update(ConflictResolutionMode.AlwaysOverwrite);
}
result = (FindGroupByName(newGroupName, folder.Id) != null);
return result;
}
и способ поиска группы:
public ContactGroup FindGroupByName(string groupName, FolderId folderId)
{
ItemView groupView = new ItemView(10);
SearchFilter groupClassFilter = new SearchFilter.IsEqualTo(ItemSchema.ItemClass, "IPM.DistList");
SearchFilter groupNameFilter = new SearchFilter.IsEqualTo(ContactGroupSchema.DisplayName, groupName);
SearchFilter groupFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And) { groupClassFilter, groupNameFilter };
FindItemsResults<Item> groupFindResult = _service.FindItems(folderId, groupFilter, groupView);
if (groupFindResult.Items.Count == 1)
{
var group = (ContactGroup)groupFindResult.Items[0];
ContactGroup contactGroup = ContactGroup.Bind(_service, group.Id);
return contactGroup;
}
return null;
}
После того, как я переименую группу, я больше не могу ее найти, используя новое имя.
НО, если я использую старый - группа там. В свойствах он имеет новое имя как DiplayName, а также в outlook он отображается правильно, но этот метод FindGroupByName не может его найти. IsDirty равно false. кто-нибудь сталкивался с такой проблемой? есть ли какая-то задержка на серверах Outlook (я ждал довольно долго перед вторым звонком)? что может быть возможным решением? или, может быть, есть какие-то документы, которые могут помочь?