OneNote API 间歇性 returns 查询 O365 SharePoint SiteId 时出现 HTTP 400

OneNote API intermittently returns HTTP 400 when querying O365 SharePoint SiteId

我的代码调用 OneNote API 将 SharePoint Online 站点 URL 解析为 SiteCollectionId 和 SiteId。我们得到一个不记名令牌,设置 HTTP 身份验证 header 并发出 GET 请求到:

https://www.onenote.com/api/v1.0/myorganization/sitecollections/FromUrl(url='https://mytenantxyz.sharepoint.com/sites/copynotesite')

大约一周以来,它一直在 return 预期的响应,类似于:

{
  "@odata.context": "https://www.onenote.com:576/api/v1.0/$metadata#Microsoft.OneNote.Api.SiteMetadata",
  "siteCollectionId": "111e03ac-468c-4a28-9aab-543098ef49bb",
  "siteId": "555d72a0-f82f-4e4c-ae8a-17ef0ea04f32"
}

但是,今天它决定 return 在 10 个请求中大约有 9 个执行以下操作:

{
  error":  {
     "code" : “20158”,
     "message": "Unable to get SiteMetadta for the url specified in the request.",
    "@api.url": "http://aka.ms/onenote-errors#C20158"
    }
}

Microsoft 文档 (link) 将错误 20158 解释为:
无法获取请求中指定的站点 URL 的元数据。检查提供的 URL 的格式。支持的格式包括 https://domain.sharepoint.com/site-a and https://domain.com/sites/site-a。(SharePoint 支持处于预览阶段.)” 我不知道这已经在预览中了(我认为它是 GA),但无论如何它并没有解释为什么它间歇性地对完全相同的输入(相同的 URL 和不记名令牌)有效。

难道它只是 OneNote API 或 SharePoint API 中的错误,它必须在幕后调用?

请参考博文 - http://blogs.msdn.com/b/onenotedev/archive/2015/06/11/and-sharepoint-makes-three.aspx

我们添加了 FromUrl 方法,因此您可以传入绝对站点 URL 并获取站点 collection 和站点 ID。您应该仅在需要时进行此调用,然后存储值(站点 collection 和站点 ID)以供将来在您对 OneNote API.

的请求中使用

但这并不能解决间歇性问题。请与我们分享 X-correlationId header 失败的请求,以便我们进一步提供帮助。