5
有没有办法以管理员身份更改用户个人资料图片?在我们公司,我们有一个中央存储库,用于存储每个人的图像,我们希望在TFS Web Portal上使用他们的配置文件。我知道每个人都可以单独做,但是可以在全球范围内为每个人做到吗?TFS 2012中的个人资料图片
有没有办法以管理员身份更改用户个人资料图片?在我们公司,我们有一个中央存储库,用于存储每个人的图像,我们希望在TFS Web Portal上使用他们的配置文件。我知道每个人都可以单独做,但是可以在全球范围内为每个人做到吗?TFS 2012中的个人资料图片
TL/DR
的详细
官方的回答:没有。不在当前版本的平台中,它正在考虑用于未来版本。
真实答案,它可以用api欺骗来完成。但它仍然不受支持。我正在研究一个可以做到这一点的命令行工具。假期过后,我大概可以分享它。如果你以前需要它,打开reflector.net中的webaccess dll,你就可以找到有问题的代码。
配置文件图像基本上是用户身份对象的扩展属性。
重要的线路有:
_identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Data", imageData); /* byte[] containing 90x90px png */
_identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Type", "image/png");
_identity.SetProperty("Microsoft.TeamFoundation.Identity.Image.Id", Guid.NewGuid().ToByteArray());
_identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.Data", null);
_identity.SetProperty("Microsoft.TeamFoundation.Identity.CandidateImage.UploadDate", null);
UpdateIdentity();
代码更新身份:
private static void UpdateIdentity()
{
try
{
_service.UpdateExtendedProperties(_identity);
_service.RefreshIdentity(_identity.Descriptor);
}
catch (PropertyServiceException)
{
//swallow;
}
}
代码检索身份服务和身份:
var server = TfsConfigurationServerFactory.GetConfigurationServer(new Uri("http://localhost:8080/tfs"));
server.ClientCredentials = new TfsClientCredentials();
server.ClientCredentials = new TfsClientCredentials(new WindowsCredential(new NetworkCredential(connectUser, password)));
server.Authenticate();
_service = server.GetService<IIdentityManagementService2>();
var identities = _service.ReadIdentities(IdentitySearchFactor.AccountName,
new[] {userToSetImageOn}, MembershipQuery.None, ReadIdentityOptions.None);
图像不会出现直到所述人登录到web访问。还没有找到解决办法。必须由Tfs管理员帐户执行。 – jessehouwing