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