如何从 Identityref 获取电子邮件

问题描述 投票:0回答:2

我看过

UserHttpClient
ProfileHttpClient
GraphHttpClient

当我从工作项目(“分配给”字段)中获得

IdentityRef
时,我无法弄清楚如何从其中任何一个中检索电子邮件地址。

之前我假设

uniquename
字段始终是电子邮件地址,但前提安装似乎并非如此?

c# azure-devops azure-devops-rest-api
2个回答
1
投票

我终于明白了。

identityRef
包含一个名为
Descriptor
的字段,它对应于
ProfileHttpClient
Rest api)中的“用户描述符”。

因此,要获取电子邮件,必须执行以下操作:

public static Task<string> GetEmailAddress(this VssConnection connection, SubjectDescriptor descriptor)
{
    var client = connection.GetClient<GraphHttpClient>();
    var user = await client.GetUserAsync(descriptor.ToString());
    return user?.MailAddress;
}

// .. and in your code (where assignedTo is an IdentityRef).
var email = await connection.GetEmailAddress(assignedTo.Descriptor);

更新

这在 Azure DevOps Server 上不起作用,因为该图不可用。所以问题依然存在。

(将此作为云版本的答案)


0
投票

我认为有一种方法可以做到这一点。您可以从

IdentityRef
获取“id”并执行以下其余 Api 调用

http://{服务器:端口}/tfs/{collection)/_apis/identities/{identityId}?api-version=6.0

这将返回 Identity 类型为

Identity
的对象(不是 IdentityRef)。该对象包含“属性”字段,请参考此属性字段中的“邮件”属性,您可以在其中找到电子邮件。

© www.soinside.com 2019 - 2024. All rights reserved.