You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Graph API获取SharePoint团队站点驱动器返回0,无法上传文件

SharePoint团队站点Graph API获取驱动器为空/Null问题排查

上下文

  • Entra ID用户myuser可通过浏览器正常访问SharePoint团队站点mysite的列表、文件夹及文件;
  • ASP.NET Core Web应用已配置Azure应用注册,用户myuser可通过Entra ID SSO登录,应用能成功获取Graph API访问令牌,且可正常获取mysite的站点数据(含站点ID)。

问题

  1. 调用_graphClient.Sites[$"{siteUrl}:{sitePath}"].GetAsync()获取站点数据时,返回的site.Drives字段为null;
  2. 调用_graphClient.Sites[site!.Id].Drives.GetAsync()直接获取站点驱动器时,返回HTTP 200但驱动器数量为0。
    最终目标是上传文件到该站点文件夹,但因无法获取驱动器ID受阻。

相关代码:

var siteUrl = "<...>.sharepoint.com";
var sitePath = "/sites/<...>";

// 获取站点ID,成功但site.Drives为null
var site = await _graphClient.Sites[$"{siteUrl}:{sitePath}"].GetAsync();
var siteId = site!.Id; // 可获取站点ID
// 返回HTTP 200,但驱动器数量为0
var drives = await _graphClient.Sites[site!.Id].Drives.GetAsync();

附加信息

Web应用通过依赖注入获取_graphClient,Program.cs配置如下:

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
  .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
  .EnableTokenAcquisitionToCallDownstreamApi()
  .AddMicrosoftGraph(builder.Configuration.GetSection("GraphV1"))

排查与解决步骤

1. 检查Graph API权限配置

确保应用注册已添加Delegated权限并完成管理员同意:

  • 需添加Sites.Read.All或Sites.ReadWrite.All权限(根据写入需求选择);
  • 确认权限状态为已授予管理员同意(在Azure门户的应用注册->API权限页面查看)。

2. 显式扩展请求字段

默认情况下,Graph API获取站点数据时不会返回drives字段,需要通过$expand参数显式请求:

var site = await _graphClient.Sites[$"{siteUrl}:{sitePath}"]
    .GetAsync(requestConfiguration => 
    {
        requestConfiguration.QueryParameters.Expand = new string[] { "drives" };
    });

修改后返回的site.Drives会包含站点的驱动器数据。

3. 直接定位默认文档库驱动器

团队站点的默认文档库可通过简化路径直接获取,无需先查询站点ID:

// 获取站点默认文档库驱动器
var drive = await _graphClient.Sites[$"{siteUrl}:{sitePath}"].Drives["root"].GetAsync();

// 或者直接获取站点所有驱动器
var drives = await _graphClient.Sites[$"{siteUrl}:{sitePath}"].Drives.GetAsync();

4. 验证访问令牌的权限范围

解码访问令牌(如使用jwt.ms工具),查看scp字段确认包含所需权限(如Sites.ReadWrite.All)。若权限缺失,检查appsettings.json中GraphV1配置节的权限范围:

"GraphV1": {
  "BaseUrl": "https://graph.microsoft.com/v1.0",
  "Scopes": "Sites.ReadWrite.All"
}

5. 确认站点驱动器存在

通过浏览器访问站点的文档库页面,确认目标驱动器(文档库)确实存在,排除站点配置异常导致的驱动器缺失问题。

内容的提问来源于stack exchange,提问作者g.pickardou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:13:18