Microsoft Graph API查询可在资源管理器上运行,但不能在Microsoft Graph .NET客户端库中使用

时间:2019-10-18 14:49:02

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

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

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

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

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代替,但是也失败了。

1 个答案:

答案 0 :(得分:3)

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

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

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

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