Получение элементов диска из Microsoft Graph API: запрос искажен или неверен - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь получить элементы диска через Microsoft Graph Api (SDK) и пробовал следующие варианты:

  1. _graphServiceClient.Drives[driveInfo.Id].Items.Request().GetAsync(): это, к сожалению, приводит к ошибке с сообщением об ошибке с сообщением "Запрос искажен или неверен" и код "invalidRequest" . Однако, если я выполню _graphServiceClient.Drives[driveInfo.Id].Request().GetAsync(), я получу обратно все диски, но свойство Items будет null.

  2. _graphServiceClient.Drives[driveInfo.Id].Request().Expand(d => d.Items).GetAsync(), это также приводит к ошибке с сообщением "Запрос искажен или неверен" и кодом "invalidRequest" .

Я не знаю, как идти дальше, все еще исследуя, но документация в настоящий момент делает меня невежественным. Кто-нибудь добился успеха либо с .Expand(), либо с получения файлов с диска?

Спасибо, Y

1 Ответ

2 голосов
/ 01 мая 2019

Вы используете Items только при получении одного DriveItem:

await graphClient
  .Me
  .Drive
  .Items[item.Id] 
  .Request()
  .GetAsync();

await graphClient
  .Drives[drive.Id]
  .Items[item.Id]
  .Request()
  .GetAsync();

Если вы хотите получить коллекцию DriveItem, вам нужно указать корневую папку:

await graphClient
  .Me
  .Drive
  .Root // <-- this is the root of the drive itself
  .Children // <-- this is the DriveItem collection
  .Request()
  .GetAsync();

await graphClient
  .Drives[drive.Id]
  .Root 
  .Children
  .Request()
  .GetAsync();

Блочные тесты SDK являются хорошим источником для быстрых примеров. Например, OneDriveTests.cs содержит несколько примеров адресации накопителей и DriveItems.

...