【问题标题】:Bulk User profile updates using CSOM使用 CSOM 批量更新用户配置文件
【发布时间】:2021-12-26 18:31:27
【问题描述】:

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

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

提前致谢。

【问题讨论】:

    标签: azure-active-directory sharepoint-online csom sharepoint-userprofile


    【解决方案1】:

    原因:

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

    可能的解决方法:

    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可选:尝试使用带有 Start-Sleep -Milliseconds 1000 语句的 ExecuteQuery 调用,尤其是在循环中调用它时。

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

    1. Bulk Update | so ref
    2. update User Profile

    其他参考资料:

    1. Azure AD Graph API-SO
    2. Microsoft Graph throttling guidance | Microsoft Docs
    3. 429 error-SO ref

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 2018-02-05
      相关资源
      最近更新 更多