You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Microsoft Graph更新OneNote页面遇PUT错误,需改用Patch请求?

Fixing "No HTTP resource found" When Updating OneNote Page Content via Microsoft Graph

你说得完全对——更新现有OneNote页面内容确实需要用HTTP PATCH请求,而不是PUT。好消息是你完全不需要修改.NET库,Microsoft Graph .NET SDK本身就提供了对应PATCH请求的方法。

只需要把代码里的PutAsync替换成PatchAsync,同时注意异步方法的正确调用(别漏了await读取流),调整后的代码如下:

MultipartFormDataContent form = new MultipartFormDataContent();
form.Add(some stream contents); // 确保这里的内容符合OneNote要求的多部分格式

// 必须await流的读取操作,保证流已准备就绪
var formdatastream = await form.ReadAsStreamAsync();

// 用PatchAsync替代PutAsync来执行部分内容更新
await graphClient.Users[userPrincipalName]
    .Onenote
    .Pages[onenotepage.Id]
    .Content
    .Request()
    .PatchAsync(formdatastream);

另外还有几个需要注意的细节,避免踩坑:

  • 确认你的多部分内容结构正确:OneNote要求包含application/xhtml+xml类型的HTML内容部分,若有附件也需要添加对应的部件并设置正确的请求头。
  • 确保应用拥有足够的权限:至少需要Notes.ReadWrite权限(如果是跨用户操作则需要Notes.ReadWrite.All),且已在Azure AD中完成权限配置。
  • 始终正确await异步方法,避免出现流未读取完成或线程死锁的问题。

内容的提问来源于stack exchange,提问作者Locke

火山引擎 最新活动