如何使用IdentityManagementService获取Tfs WorkItem AssignedTo电子邮件地址,同时为多个WorkItem提供相同的DisplayName值?

时间:2014-11-18 12:50:17

标签: c# tfs

您好我使用以下代码获取WorkItem的AssignedTo字段集合的电子邮件地址。我的问题是,有太多的WorkItem包含其AssignedTo字段值的相同DisplayName值。那&# 39;为什么我得到错误

"找到匹配' xxxxxx'的多个身份。请指定以下身份之一"

请建议我如何摆脱这个错误。

    TfsTeamProjectCollection projCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri);
    IIdentityManagementService ims = projCollection.GetService<IIdentityManagementService>();
    WorkItemStore WIS = (WorkItemStore)projCollection.GetService(typeof(WorkItemStore));
    WorkItemCollection WIC = WIS.Query(workItemQuery);      
    foreach (WorkItem wi in WIC)
    {                
        var workItemIdentity = ims.ReadIdentity(IdentitySearchFactor.DisplayName,(wi.Fields[CoreField.AssignedTo].OriginalValue).ToString(), MembershipQuery.Direct, ReadIdentityOptions.ExtendedProperties);
    }

1 个答案:

答案 0 :(得分:0)

如果捕获“MultipleIdentitiesFoundException”异常,该变量会为您提供选择唯一标识的选项。

catch(MultipleIdentitiesFoundException ex){var workItemIdentity = ex.MatchingIdentities[0].UniqueName;} 

这只是一种解决方法。在那一刻,哪一个人是有效的身份是很困难的。但是,如果同一用途在两个不同的域中具有电子邮件地址,则通常会发生 希望它有所帮助。