C# MsGraph-SDK:发送批处理请求以使用Microsoft Graph SDK获取管理器链接



首先,请分享是否有任何MSGraph SDK官方文档可供我参考。

我有一个方案,我想从 AAD 查询所有管理器和成员链接,而不分别提供用户和组对象 ID。这目前在DQ频道中是支持的,即我可以使用MsGraphSDK做这样的事情:

MsGraphClient.Users.Delta().Request().Select("manager")

MsGraphClient.Groups.Delta().Request().Select("members")

由于性能问题和其他问题,我不想使用 DQ 进行初始同步。 我的回退选项是直接通过 Graph 查询,所以我想做类似下面的事情,但这不会返回任何结果:

MsGraphClient.Users.Request().Select("manager")

MsGraphClient.Groups.Request().Select("members")

看起来目前在较低层(AADGraph(甚至不支持此功能。如果我错了,请纠正我,如果有的话,请提供解决方案!

所以我的回退方法是拉取所有用户和组 aadObjectId,并分别显式查询管理器和成员链接。

就我而言,AAD 中可能有 500K 个用户对象,我希望避免对 AAD 进行 500K 个单独的 GetManager 调用。相反,我想尽可能多地批处理图形请求。

我无法从互联网上找到有关通过 SDK 发送批处理请求的太多帮助。 这是我正在做的:

我有这个批处理请求内容:

var batchRequestContent = new BatchRequestContent();
foreach (string aadObjectId in aadObjectIds)
{
batchRequestContent.AddBatchRequestStep(new BatchRequestStep(aadObjectId, Client.Users[aadObjectId].Manager.Request().GetHttpRequestMessage()));
}

我正在尝试通过 GraphSDK 发送包含此内容的 BatchRequest 以获得 BatchResponse。SDK 目前是否支持此功能?如果是,那么程序是什么?任何文档或示例?如何读回批处理响应?最后,批处理中的 # 个请求是否有任何限制?

谢谢

这是一个相关的帖子: $expand=经理不展开经理

v1.0 终结点中的管理器和 directReports 关系当前不支持$expand。它是测试版端点中的支持,但 API 返回大量丢弃信息的方式:https://graph.microsoft.com/beta/users?$expand=manager

客户端库目前部分支持 Batch,尽管我们有几个拉取请求来提供更好的支持 与下一个版本(PR 1 和 2(一起使用。

若要对当前库和经过身份验证的客户端使用 batch,请执行以下操作:

var authProv = MsGraphClient.AuthenticationProvider;
var httpClient = GraphClientFactory.Create(authProv);
// Send batch request with BatchRequestContent.
HttpResponseMessage response = await httpClient.PostAsync("https://graph.microsoft.com/v1.0/$batch", batchRequestContent);
// Handle http responses using BatchResponseContent.
BatchResponseContent batchResponseContent = new BatchResponseContent(response);

相关内容

最新更新