Как мы можем прочитать поток файлов SharePoint без выполнения запроса? - PullRequest
0 голосов
/ 18 апреля 2020
 if (clientContext.HasPendingRequest)
    {
      clientContext.ExecuteQueryWithRetry();
      FileInformation fileInformation = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, 
      item.FieldValues["FileRef"].ToString());
using (System.IO.StreamReader sr = new System.IO.StreamReader(fileInformation.Stream, Encoding.GetEncoding("iso-8859-1")))
 {
String xml = sr.ReadToEnd();
 }
    }

Этот код читает поток, но проблема в том, что в случае 1000 документов выполнить запрос будет 1000 раз. Есть ли альтернатива для чтения нескольких потоков.

1 Ответ

1 голос
/ 20 апреля 2020

Вы можете попытаться загрузить несколько файлов в пакетном режиме для оптимизации частоты запросов.

Поддельный код:

var fileList = new List<FileInformation>();
            var requestBatch = 0;
            foreach (var item in items)
            {
                FileInformation fileInformation = File.OpenBinaryDirect(ctx, item.FieldValues["FileRef"].ToString());
                fileList.Add(fileInformation);
                requestBatch++;
                if (requestBatch % 10 == 0)
                {
                    ctx.ExecuteQueryRetry(2);
                }

            }
//to do, get file from fileList
...