我正在使用GraphHttpClient类来尝试并检索用户是Visual Studio Team Services中成员的所有组。我可以完全连接到VSTS并运行以下代码,但我经常会遇到VSTS内置帐户的错误。我不确定我做错了什么或如何纠正这个问题,以便代码毫无例外地运行。
循环所有用户并生成他们所属的群组列表的最佳方法是什么?
GraphHttpClient graphClient = connection.GetClient<GraphHttpClient>();
PagedGraphUsers users = graphClient.ListUsersAsync().Result;
foreach (var user in users.GraphUsers)
{
if (user.Origin.Equals("aad"))
{
var ent = graphClient.ListMembershipsAsync(user.Descriptor).Result.ToList();
foreach (var graphMembership in ent)
{
var group = graphClient.GetGroupAsync(graphMembership.ContainerDescriptor).Result;
Console.Out.WriteLine("{0},{1}",
user.PrincipalName.PadRight(20),
group.PrincipalName);
}
}
else
{
Console.Out.WriteLine("{0},Service Accounts",
user.DisplayName.PadRight(20));
}
}
当我删除IF语句并让所有用户通过ListMememberhships时,我收到此错误:
Unhandled Exception: System.AggregateException: One or more errors occurred. ---> Microsoft.VisualStudio.Services.Graph.InvalidSubjectTypeException: acs``
答案 0 :(得分:0)
以acs开头的描述符是服务帐户,例如Hosted VS2017代理服务,TeamFoundationService。
所以你可以改变这样的条件:
if (!user.Descriptor.ToString().StartsWith("acs"))