Я пытаюсь использовать инфраструктуру клиента SharePoint для выполнения поиска, используя переносимую dll из приложения Windows.Поиск с помощью SharePoint CSOM (переносимый) генерирует исключение
Использование Fiddler Я вижу, что мой поиск выполнен и возвращает коллекцию метаданных и результаты поиска JSON. Это идентично результату не-портативного CSOM.
Когда CSOM пытается отобразить результат это объекты данных, я получаю следующее исключение:
Невозможно привести объект типа «System.Collections.Generic.Dictionary`2 [System.String, система. Object] ', чтобы напечатать «Microsoft.SharePoint.Client.Search.Query.ResultTableCollection».
Это исключение встречается внутри CSOM (переносной). Non-portable CSOM работает без исключения и возвращает ожидаемый результат.
код Я бегу, чтобы получить это исключение:
var query = new KeywordQuery(ctx);
query.QueryText = "something";
var executor = new SearchExecutor(ctx);
var results = executor.ExecuteQuery(query);
await ctx.ExecuteQueryAsync();
В приведенном выше CTX является ClientContext, который уже прошел проверку подлинности. Другие запросы, такие как получение определенного списка, работают так, как ожидалось.
Я ссылающийся на следующие библиотеки DLL из C: \ Program Files \ Common Files \ Microsoft Shared \ Web Server Extensions \ 16 \ ISAPI:
- Microsoft.SharePoint.Client.Portable.dll
- Microsoft .SharePoint.Client.Runtime.Portable.dll
- Microsoft.SharePoint.Client.Runtime.WindowsStore.dll
- Microsoft.SharePoint.Client.Search.Portable.dll
Мой вопрос есть.
Как решить эту проблему, чтобы я мог использовать CSOM для запуска поисковых запросов из приложения Windows Store?
UPDATE: Я добавил следующее после аутентификации ClientContext:
ctx.ExecutingWebRequest += (s, e) =>
e.WebRequest.Headers["Accept-Encoding"] = "gzip, deflate";
Это решило непосредственную проблему, но ввел новую. Я получаю System.FormatException:
Не хорошо отформатированный поток JSON.
Поскольку JSON из портативного и непереносного CSOM одинаковый, не должно быть ошибки синтаксического анализа в одном CSOM, а не другом.