Как вы подключаетесь к серверу TFS в C#, используя определенные учетные данные?
Я пытаюсь написать приложение aC#, которое подключается к TFS и получает информацию о рабочем элементе. К сожалению, похоже, что во всех примерах использования TFS SDK используются учетные данные по умолчанию для текущего пользователя (т.е. информация для входа в мой домен). Ближайшая часть информации, которую я нашел, это использовать TeamFoundationServer (String, ICredentials)
конструктор, однако я не могу найти информацию для подходящего класса, который взаимодействует с ICredentials
интерфейс (тем более что он, похоже, использует не ICredentials System.Net, а специфичные для TeamFoundationServer ICredentials).
У кого-нибудь есть понимание для входа в TFS с определенной комбинацией имени пользователя / пароля / домена?
3 ответа
Следующий код должен помочь вам:
NetworkCredential cred = new NetworkCredential("Username", "Password", "Domain");
tfs = new TeamFoundationServer("http://tfs:8080/tfs", cred);
tfs.EnsureAuthenticated();
Домен - это либо фактический домен, либо в ситуации рабочей группы это будет имя сервера, на котором размещен уровень приложений TFS.
Для TFS 2015 и 2017, упомянутые объекты и методы были (или находятся) устаревшими.
Чтобы подключиться к TFS с использованием определенных учетных данных:
// For TFS 2015 & 2017
// Ultimately you want a VssCredentials instance so...
NetworkCredential netCred = new NetworkCredential(@"user.name", @"Password1", "DOMAIN");
WindowsCredential winCred = new WindowsCredential(netCred);
VssCredentials vssCred = new VssClientCredentials(winCred);
// Bonus - if you want to remain in control when
// credentials are wrong, set 'CredentialPromptType.DoNotPrompt'.
// This will thrown exception 'TFS30063' (without hanging!).
// Then you can handle accordingly.
vssCred.PromptType = CredentialPromptType.DoNotPrompt;
// Now you can connect to TFS passing Uri and VssCredentials instances as parameters
Uri tfsUri = new Uri(@"http://tfs:8080/tfs");
var tfsTeamProjectCollection = new TfsTeamProjectCollection(tfsUri, vssCred);
// Finally, to make sure you are authenticated...
tfsTeamProjectCollection.EnsureAuthenticated();
Спустя годы, вот как вы делаете это с TFS 2013 API:
// Connect to TFS Work Item Store
ICredentials networkCredential = new NetworkCredential(tfsUsername, tfsPassword, domain);
Uri tfsUri = new Uri(@"http://my-server:8080/tfs/DefaultCollection");
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(tfsUri, networkCredential);
WorkItemStore witStore = new WorkItemStore(tfs);
Если это не сработает, попробуйте передать учетные данные через другие Credential
занятия (работали для меня):
// Translate username and password to TFS Credentials
ICredentials networkCredential = new NetworkCredential(tfsUsername, tfsPassword, domain);
WindowsCredential windowsCredential = new WindowsCredential(networkCredential);
TfsClientCredentials tfsCredential = new TfsClientCredentials(windowsCredential, false);
// Connect to TFS Work Item Store
Uri tfsUri = new Uri(@"http://my-server:8080/tfs/DefaultCollection");
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(tfsUri, tfsCredential);
WorkItemStore witStore = new WorkItemStore(tfs);