问题
I am trying to get a drive's items via the Microsoft Graph Api (SDK) and tried the following options:
_graphServiceClient.Drives[driveInfo.Id].Items.Request().GetAsync():, this unfortunately results in an error with message error with message "The request is malformed or incorrect" and code "invalidRequest". If I execute_graphServiceClient.Drives[driveInfo.Id].Request().GetAsync()however, I get back all drives but theItemsproperty isnull._graphServiceClient.Drives[driveInfo.Id].Request().Expand(d => d.Items).GetAsync(), this also results in an error with message "The request is malformed or incorrect" and code "invalidRequest".
I don't know how to go on from here, still researching, but the documentation is leaving me clueless at the moment. Anyone success with either .Expand() or getting the actual files from a Drive?
Thanks, Y
回答1:
You only use Items when you're fetching a single DriveItem:
await graphClient
.Me
.Drive
.Items[item.Id]
.Request()
.GetAsync();
await graphClient
.Drives[drive.Id]
.Items[item.Id]
.Request()
.GetAsync();
When you want to retrieve a DriveItem collection, you need to specify the root folder:
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();
The SDK unit tests are a good source for quick examples. For example, OneDriveTests.cs contains several examples for addressing Drives and DriveItems.
来源:https://stackoverflow.com/questions/55940857/getting-the-drives-items-from-microsoft-graph-api-the-request-is-malformed-or