Создайте папку или откройте ее, если она существует, с помощью управляемого API EWS.

Мы переносим наше приложение с MAPI на управляемый API EWS. В MAPI мы можем создать новую папку или открыть ее, если она существует, с помощью единственного метода MAPI IMAPIFolder::CreateFolder.

Но я не могу найти такую ​​функциональность в EWS. Я могу создать такую ​​папку (но выдает исключение, если такая папка уже существует в целевой папке):

var newFolder = new Folder(service);
newFolder.DisplayName = "name";
newFolder.Save(WellKnownFolderName.Root);

или открыть (найти) вот так

var filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "name");
service.FindFolders(WellKnownFolderName.Root, filter, new FolderView(1));

т.е. Я должен поймать это исключение и найти папку с помощью метода ExchangeService.FindFolders. Все это выглядит супер странно. И самое худшее, что мы должны использовать эти оба вызова EWS в таких случаях.

Можно ли использовать один вызов EWS для получения функции «CreateOrOpen»? Может быть, создать запрос EWS вручную или?


person Dmitry Katkevich    schedule 02.09.2016    source источник


Ответы (1)


Даже я столкнулся с аналогичной проблемой: для каждой операции нам нужно сделать вызов службы EWS. Я не нашел никакого метода службы EWS для выполнения обеих функций (создания и открытия). Поэтому я включил производительность и сделал несколько вызовов, как показано ниже.

bool isExists = ews.FolderExists(EwsFolderId.Root, "name");
if (!isExists){
    ews.CreateFolder(EwsFolderId.Root, "name");
 }else{
     //Find folder or get folder code goes here
  }
person AnneRaNa    schedule 02.09.2016