Неправильные результаты возвращены с помощью Client Client Custermodel SharePoint
-
16-10-2019 - |
Вопрос
Я использую модель объекта клиента SharePoint для небольшого приложения. Когда я пытаюсь получить все папки и элементы из «Общих документов» -либрика, он не возвращает все папки и файлы.
Код:
private void SearchFolder(ClientContext context, SP.Folder folder, SP.List list, int niveau)
{
SP.FolderCollection collection = folder.Folders;
context.Load(collection);
context.ExecuteQuery();
//Search subfolders
foreach (SP.Folder tempFolder in collection)
{
string tempFolderNaam = tempFolder.Name;
SearchFolder(context, tempFolder, list, ++niveau);
}
//Search this folder
SearchFiles(context, folder, list, niveau);
}
Я называю этот метод с:
SearchFolder (Context, List.rootFolder, List, 0)
Таким образом, он начинается с корневой папки и должен получить все (sub) файлы и (sub) папки
У меня есть 10 папок в корневой и 1 подпапке в первом. Он возвращает только 5 (4 в порядке, один-«формы»-расстановка)
Что -то мне не хватало/не так? Или это ошибка?
Заранее спасибо!
Решение
Просто на основе рассмотрения вашего кода, а не знания клиента OM, я замечаю, что вы рекурсивно вызываете SearchFolder на одном и том же объекте клиента. В то время как вы итерации через свой объект коллекции, вы загружаете еще одну коллекцию и вызовы, что может повторно загрузить коллекцию, определенную на более высоком уровне в стеке вызовов. Возможно, стоит создать новый контекстный объект в методе, а не передать существующий вниз через иерархию вызовов, просто чтобы убедиться, что это не вызывает проблемы.
Альтернативный способ обработки всех документов - использование CAML, как описано на MSDN Использование атрибута Scope = 'reccurive'.