【发布时间】:2019-09-13 06:41:43
【问题描述】:
我创建了一个服务帐户来模拟我组织中的用户,以便以用户的名义更改工作项。我已经将该服务帐户添加到“项目收集服务帐户”组中,该组的“代表他人提出请求”设置为“允许”。服务帐户具有 Visual Studio 订阅。
然后,我使用与本地 TFS 配合使用的代码来执行模拟,并收到错误 500,提示“访问被拒绝:X 需要以下权限才能执行此操作:发出请求代表他人”
我应该怎么做才能让它工作?这是我正在使用的代码:
var credential = new VssAadCredential("X@myoganization", "password");
var collection = new TfsTeamProjectCollection(new Uri("my_devops_uri"), credential);
MyTfsConnection.ProjectCollection = collection;
MyTfsConnection.IdentityService = collection.GetService<IIdentityManagementService>();
MyTfsConnection.WIStore = collection.GetService<WorkItemStore>();
var adAccount = "someone@myoganization";
var identity = MyTfsConnection.IdentityService.ReadIdentity(IdentitySearchFactor.AccountName, adAccount, MembershipQuery.None, ReadIdentityOptions.None);
using (var impersonatedCollection = new TfsTeamProjectCollection(new Uri("my_devops_uri"), credential, identity.Descriptor))
{
var impersonatedWIStore = impersonatedCollection.GetService<WorkItemStore>();
}
【问题讨论】:
-
我真正想要的是能够在 TFS 中模拟用户,这样我就可以对工作项进行更改,修改工作项的历史记录将显示模拟用户的名称,而不是我的名称。我可以而且我正在我们的本地 TFS 2017 中通过将我自己分配到项目收集服务帐户组来做到这一点,但是随着我们转向 Azure DevOps,我发现这种方法不再可行。您的回复确实解决了我的问题,感谢您的帮助,但我无法将其标记为答案。
-
感谢您的热心回复和更新。
标签: c# tfs azure-devops