首页 > 解决方案 > 如何从 identityref 获取电子邮件

问题描述

我看过UserHttpClient,ProfileHttpClientGraphHttpClient.

IdentityRef当我从工作项(“AssignedTo”字段)中获取电子邮件地址时,我无法弄清楚如何从其中的任何一个中检索电子邮件地址。

之前我假设该uniquename字段始终是电子邮件地址,但对于本地安装似乎不是这样?

标签: c#azure-devopsazure-devops-rest-api

解决方案


我终于弄明白了。

identityRef包含一个名为的字段,该字段Descriptor对应于ProfileHttpClientRest 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 上不起作用,因为 Graph 在其上不可用。所以问题仍然存在。

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


推荐阅读