Как вы подключаетесь к серверу TFS в C #, используя определенные учетные данные? - PullRequest
9 голосов
/ 30 июня 2010

Я пытаюсь написать приложение ac #, которое подключается к TFS и получает информацию о рабочем элементе.К сожалению, похоже, что во всех примерах использования TFS SDK используются учетные данные по умолчанию для текущего пользователя (т.е. информация для входа в мой домен).Самая близкая часть информации, которую я нашел, - это использование конструктора TeamFoundationServer (String, ICredentials), однако я не могу найти какую-либо информацию для подходящего класса, который взаимодействует с интерфейсом ICredentials (тем более что он, похоже, не использует System.Net ICredentials, аСпецифичные для TeamFoundationServer ICredentials).

Есть ли у кого-нибудь понимание входа в TFS с определенной комбинацией имени пользователя / пароля / домена?

Ответы [ 3 ]

18 голосов
/ 30 июня 2010

Следующий код должен вам помочь:

NetworkCredential cred = new NetworkCredential("Username", "Password", "Domain");
tfs = new TeamFoundationServer("http://tfs:8080/tfs", cred);
tfs.EnsureAuthenticated();

Домен является либо фактическим доменом, либо в ситуации рабочей группы это будет имя сервера, на котором размещен уровень приложений TFS.

13 голосов
/ 11 января 2017

Для 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();
3 голосов
/ 05 октября 2015

Годы спустя, вот как вы делаете это с 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);
...