2015-03-12 3 views
0

Я пытаюсь скопировать все файлы из библиотеки doc lib в другую библиотеку doc в другое веб-приложение, которое может находиться в разных средах, например DL в SP2010, в DL в SP2013. Поэтому я ограничусь использованием Client Object Model для копирования файлов. Я успешно могу копировать файлы, но по моему требованию мне также нужно скопировать все версии. К сожалению, я понимаю, что объект FileVersion в CSOM не имеет метода OpenBinary() (в сервере OM вы можете использовать)Версия модели экземпляра клиентской модели Sharepoint

Есть ли у кого-нибудь представление о том, как это можно достичь или что-то делать.

ответ

0

CSOM не поддерживает загрузку исторических версий документов. Но вы можете скачать их через специальную папку _vti_history. Here объясняется, как это сделать.

0

Это работает для меня с SharePoint 2013 с претензиями - заголовок агента пользователя был для меня ключом.

 private System.Net.WebClient SPWebClient() { 

      if (_SPWebClient != null) return _SPWebClient; 

      _SPWebClient = new WebClient { 

       Credentials = new NetworkCredential(_sharePointUser, _sharePointPassword, _sharePointDomain) 

      }; 

      // for claims based auth 
      _SPWebClient.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); 

      _SPWebClient.Headers["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC)"; 

      return _SPWebClient; 

     } 

     foreach (var version in versions) { 

      var versionStream = this.SharePointWebClient.OpenRead($"{this.SharePointUrl}/{version.Url}"); 

      // do something useful 

     } 
Смежные вопросы