【发布时间】:2021-10-01 17:15:52
【问题描述】:
我正在尝试使用 microsoft graph api 从 Azure AD 中提取多个用户 使用按 userprincipalname 过滤的 Dot Net Core Microsoft.Graph.Beta SDK 的批处理请求。
var batchRequestContent = new BatchRequestContent();
var queryOptions = new List<QueryOption>()
{
new QueryOption("$filter",$"userprincipalname eq '{email}'"),
new QueryOption("$count","true"),
new QueryOption("$select","id,mail")
};
var request = client.Users.Request(queryOptions)
.Header("ConsistencyLevel", "Eventual")
.Top(1);
var requestId = batchRequestContent.AddBatchRequestStep(request);
emailWithRequestIds.Add(requestId, email);
var response = await
client.Batch.Request().PostAsync(batchRequestContent);
var responseList = await response.GetResponsesAsync();
foreach (var key in responseList)
{
var email = emailWithRequestIds[key.Key];
if (key.Value.StatusCode == HttpStatusCode.NotFound)
{
emailDictionary.Add(email, null);
}
else
{
key.Value.EnsureSuccessStatusCode();
var responseContent = await key.Value.Content.ReadAsStringAsync();
var parsedResponse = ValidateBatchResponse(responseContent,
email);
if (parsedResponse.Exists == true)
{
emailDictionary.Add(email,parsedResponse.Email);
}
else
{
emailDictionary.Add(email, null);
}
}
}
对用户端点的相同请求没有批处理返回数据,而在批处理请求中它返回空。使用 sdk 时批处理端点与 userPrincipalName 一起使用是否有任何限制?
【问题讨论】:
-
您能否用调用 Batch 端点的代码更新您的问题?
-
你能告诉我
ValidateBatchResponse(...)方法吗?如果 HttpResponse 内容未正确转换,您将获得一个空的 Microsoft.Graph.User。
标签: microsoft-graph-api microsoft-graph-sdks