调用Microsoft Graph API PUT driveItemVersion content接口遇itemNotFound错误
C#调用Microsoft Graph API版本内容PUT请求报错问题
我尝试调用Microsoft Graph API的https://graph.microsoft.com/v1.0/drive/items/{driveItem-id}/versions/{driveItemVersion-id}/content端点,GET请求可以正常执行,但PUT请求返回错误。
GET请求代码
await _graphServiceClient .Sites[siteId] .Drives[driveId] .Items[itemId] .Versions["1.0"] .Content .Request() .GetAsync();
PUT请求代码
await _graphServiceClient .Sites[siteId] .Drives[driveId] .Items[itemId] .Versions["1.0"] .Content .Request() .PutAsync<DriveItemVersion>(file);
抛出异常
Microsoft.Graph.ServiceException: 'Code: itemNotFound Message: Item not found'
可能的原因及解决办法
- 版本ID格式错误:Graph API中版本ID一般是系统生成的唯一标识符(而非"1.0"这类友好版本号),虽然GET请求能识别友好编号,但PUT请求不支持。先调用
/drive/items/{itemId}/versions获取版本列表,拿到对应版本的id字段值替换代码中的"1.0"。 - 权限不足:修改版本内容需要
Files.ReadWrite.All或Sites.ReadWrite.All这类高权限,确认应用/用户已被授予对应权限且权限生效。 - 版本不可编辑:部分历史版本处于只读状态,或已被锁定,无法直接修改。检查目标版本的可编辑属性。
- 泛型类型不匹配:PUT内容端点的返回类型应为
DriveItem而非DriveItemVersion,尝试修改代码为PutAsync<DriveItem>(file)。 - 路径参数错误:核对
siteId、driveId、itemId的取值是否正确,确认站点、驱动器、文件的关联关系无误。
内容的提问来源于stack exchange,提问作者Marisa B.
相关产品推荐
相关产品推荐

