首页 > 解决方案 > Microsoft Graph API 查询适用于资源管理器,但不适用于 Microsoft Graph .NET 客户端库

问题描述

我有一个 SharePoint 站点,在 Documents 文件夹中,我有一个 Excel 文件。我想进行特定的 Microsoft Graph 调用,以获取文件所在位置的详细信息。当我在 Graph Explorer 中测试查询时,这可以按预期工作:

https://graph.microsoft.com/v1.0/sites/b8b6d734-2f94-4070-ae22-xxxxxxxxxxxx/drive/root

当我尝试使用 Microsoft Graph .NET 客户端库在控制台应用程序中使用查询时,测试查询执行良好:

var resultPage = await graphClient
  .Sites["b8b6d734-2f94-4070-ae22-xxxxxxxxxxxx"]
  .Drive.Root
  .Request()
  .GetAsync();

当我尝试该根目录中选择一个特定文件夹时,它也适用于 Graph Explorer:

https://graph.microsoft.com/v1.0/sites/b8b6d734-2f94-4070-ae22-xxxxxxxxxxxx/drive/root/children/{foldername}/children/

但是当我在我的应用程序中尝试同样的查询时,它会返回一个错误。

编码:

var resultPage = await graphClient
  .Sites["b8b6d734-2f94-4070-ae22-xxxxxxxxxxxx"]
  .Drive
  .Root
  .Children["foldername"]
  .Children
  .Request()
  .GetAsync();

响应:

Error getting events: 
  Code: itemNotFound
  Message: The resource could not be found.

我也尝试使用文件夹id而不是,但这也失败了。

标签: c#microsoft-graph-apimicrosoft-graph-sdks

解决方案


如果您希望它使用您需要使用的路径ItemWithPath

var resultPage = await graphClient
  .Sites["b8b6d734-2f94-4070-ae22-xxxxxxxxxxxx"]
  .Drive
  .Root
  .ItemWithPath("/{foldername}")
  .Children
  .Request()
  .GetAsync();

您也可以id像这样通过 DriveItem 检索它:

var resultPage = await graphClient
  .Sites["b8b6d734-2f94-4070-ae22-xxxxxxxxxxxx"]
  .Drive
  .Items["{item-id}"]
  .Children
  .Request()
  .GetAsync();

推荐阅读