0

我有一个用于内部目的的 Active Directory 同步应用程序,并将数据保存到通过 Graph API 从 Azure AD 馈送的 SQL 表中。除了其基本功能外,我们还使用 CSOM 更新自定义用户配置文件属性。但大多数情况下,在处理一些请求后,我们会收到错误 429,请求太多。

是否有任何批量更新选项可以在单个请求中更新一组(例如 500/1000 配置文件)自定义用户配置文件属性?请帮助我。如果还有其他选择,请提出建议。

提前致谢。

4

1 回答 1

0

原因:

当用户超出使用限制或请求频率限制时,SharePoint Online 会在短时间内限制来自该用户帐户的任何进一步请求。对于包括 CSOM 或 REST 调用在内的请求,SharePoint Online 返回 HTTP 状态代码 429(“请求过多”)或 503 (“服务器太忙”)并且请求将失败。

可能的解决方法:

  1. 请检查响应是否包含 Retry-After 值。请等到那个时间再重试。在 reftry-after 时间段响应之前接收限制的同时进行额外调用将​​延长您的应用程序不受限制所需的时间。

注意:并非所有 Microsoft Graph API 都提供 Retry-After 标头。在这种情况下,有一个初始等待期,并随着每个 429 响应呈指数增长。

  1. 确保您在 azure 广告中的应用具有权限范围Sites.FullControl.AllUser.ReadWrite.All授予管理员同意。还要在 xml 中检查相同的应用程序权限中的 FullControl。

  2. 尝试仅选择您在请求中需要的那些用户配置文件属性,并避免不必要的。

  3. 使用 JSON 批处理将多个请求组合成一个批处理请求。

  4. 尝试使用ExecuteQueryAsync()而不是 ExecuteQuery() 或反之亦然或ExecuteQueryWithIncrementalRetry可选:尝试将 ExecuteQuery 调用与 Start-Sleep -Milliseconds 1000 语句一起使用,尤其是在循环中调用它时。

否则,请尝试使用这些powershell模块参考:

  1. 批量更新 | 所以参考
  2. 更新用户资料

其他参考:

  1. Azure AD 图形 API-SO
  2. Microsoft Graph 限制指南 | 微软文档
  3. 429 错误-SO 参考
于 2021-11-16T11:28:09.583 回答