MS Graph SDK .NET如何获取SharePoint库包含签出状态的所有项
问题根因
Microsoft Graph 查询 SharePoint 文档库的列表条目时,默认仅返回已发布(level = published)的内容,会自动过滤签出状态的草稿、待签入条目,所以你当前的代码无法获取到未发布的签出内容。尤其是首次创建还未完成首次签入的条目,默认不会出现在返回结果中,符合你遇到的现象。
修复方案
你需要在请求中添加Prefer: includeAllItems请求头,即可拉取到包含签出草稿在内的所有条目,修正后的代码如下:
// 异步写法更推荐,避免Result造成的死锁问题 var allItems = await graphClient.Sites["SITEID"].Lists["LISTID"].Items .Request() .WithHeader("Prefer", "includeAllItems") .Expand("createdByUser,fields,driveItem") .GetAsync();
注意事项
- 调用接口的应用账号需要持有
Sites.ReadWrite.All或更高的站点列表操作权限,仅Sites.Read.All权限可能仍然无法获取未发布的签出条目 - 文档库开启版本控制的场景下,返回条目的
fields属性会包含隐藏字段_Level:值为255对应已发布状态,值为1对应草稿/签出状态,你可以通过该字段快速筛选不同状态的内容 - 若需要查询条目的签出用户、签出时间,可以在
Expand参数中额外添加checkoutUser属性直接获取对应信息
内容的提问来源于stack exchange,提问作者dev.Manderson
相关产品推荐
相关产品推荐

