asp.net-core - 如何从 IGraphServiceClient 对象中获取用户?
问题描述
我有一个POST 方法,想从IGraphServiceClient对象(在Graph.Microsoft包和命名空间中)获取用户。GET 方法工作正常。然后我从这个列表中获取一个用户并将它们设置为我的 POST 方法的参数。
public async Task<Dictionary<string, List<string>>> GetUserGroupsAsync(ICollection<string> userIds)
{
var aggregatedUserGroupMap = new Dictionary<string, List<string>>();
foreach (string userId in userIds)
{
try
{
var userMemberOfCollectionRequest = graphServiceClient.Users[userId].MemberOf.Request();
var userMemberOfCollection = await userMemberOfCollectionRequest.GetAsync().ConfigureAwait(false);
if (!aggregatedUserGroupMap.ContainsKey(userId)) { aggregatedUserGroupMap.Add(userId, new List<string>()); }
foreach (var memberOf in userMemberOfCollection) { aggregatedUserGroupMap[userId].Add(memberOf.Id); }
}
catch (Exception ex)
{
throw ex;
}
}
return aggregatedUserGroupMap;
}
传入字符串集合 中的值userIds
是从 GET 结果复制的用户电子邮件地址。
的值userMemberOfCollectionRequest
看起来不错。该RequestUrl
属性包含“ https://graph.microsoft.com:443/v1.0/users/my-email@compagny.com/memberOf ”。Headers
并且QueryOptions
是空集合。
在上述方法中,以下行引发异常:
var userMemberOfCollection = await userMemberOfCollectionRequest.GetAsync().ConfigureAwait(false);
异常消息如下:
Request_ResourceNotFound
资源“my-email@compagny.com”不存在或其查询的引用属性对象之一不存在。
在 Microsoft.Graph.HttpProvider.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancelToken) 在 Microsoft.Graph.BaseRequest.SendRequestAsync(Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption) 在 Microsoft.Graph.BaseRequest.SendAsync[T](Object serializableObject , CancellationToken cancelToken, HttpCompletionOption completionOption) 在 Microsoft.Graph.UserMemberOfCollectionWithReferencesRequest.GetAsync(CancellationToken cancelToken) 在 xxx.xxx.BusinessComponent.GraphBC.GetUserGroupsAsync(ICollection`1 userIds) 在 C:\workspace\xxx\xxx.xxx\xxx.xxx .Core\BusinessComponent\GraphBC.cs:第 50 行
有谁知道我应该在哪里解决这个问题?
解决方案
解决方案是不使用电子邮件,而是使用ObjectId
属性(GUID 而不是电子邮件)。
推荐阅读
- docker - 为什么每次我更改构建参数时 docker 都会重建所有层
- java - 是否可以在其他页面上写单词,例如来自 java 程序的 google 搜索框
- database - 具有 Gradle 运行配置的 Ktor 从环境变量中“无法解析对值的替换”
- firebase - 使用 Flutter Firebase 查询带有电子邮件或名称的 uid
- c# - 从类调用接口时出现 ArgumentNullException
- excel - (谷歌表格)在单元格中组合文本和日期
- android - 在循环中添加一个在另一个下的 Textview
- python - 获得所需输出的两倍
- java - 使用 ProM 进行流程挖掘和流程发现
- javascript - 模糊除特定 div 之外的所有内容