2010-09-23 9 views
2

Dans mon entreprise, nous avons récemment mis en place un proxy TeamFoundation pour notre TeamFoundationServer. J'ai écrit une application C#, qui se connecte au TFS pour interroger diverses choses. Maintenant, je veux que l'application prenne également en charge la connexion via le proxy TFS. Comme je ne connais pas vraiment TFS, j'ai quelques difficultés. Idéalement, je veux que l'application ne "connaisse" que le proxy TFS et le fasse agir comme le TFS normal. Est-ce seulement possible?Comment se connecter à TFS via un proxy par programme?

Ce que je fais est quelque chose comme ceci:

TfsTeamProjectCollection projects = 
    new TfsTeamProjectCollection(new Uri(serverUriString, 
           new NetworkCredential(username, password, domain)); 

Cela fonctionne bien si serverUriString est le TFS (par exemple "http://MyTfs:8080"). Lorsque je le remplace par le proxy TFS (par exemple "http://MyTfsProxy:8081"), je reçois un peu non spécifique TeamFoundationServiceUnavailableException, où à la fin il indique qu'une erreur http 404 s'est produite. Le 404 n'a pas beaucoup de sens pour moi, je suis capable de faire un ping sur le serveur, je peux me connecter à partir du navigateur et Visual Studio l'accepte également. Dois-je établir une connexion avec le TFS ET le proxy? Si oui, comment je fais ça?

Répondre

6

La méthode AddProxy() est utilisée pour enregistrer une liste de serveurs proxy avec le serveur TFS, afin que les clients puissent détecter automatiquement & utiliser un serveur proxy.

Si vous souhaitez simplement configurer votre client pour qu'il utilise un serveur proxy, il n'existe aucune propriété permettant de le faire. Vous devez définir une clé de registre ou une variable d'environnement non documentée.

Pour TFS2008 clients, la clé de Registre est:

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\TeamFoundation\SourceControl\Proxy] 
"Enabled"="True" 
"Url"="http://someproxy:8081" 

Pour TFS2010 clients, la clé de Registre est:

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Proxy] 
"Enabled"="True" 
"Url"="http://someproxy:8081" 

Dans les deux versions TFS, vous pouvez définir la variable d'environnement sans papier:

System.Environment.SetEnvironmentVariable("TFSPROXY",http://someproxy:8081); 
0

Vous pouvez faire ceci:

TfsTeamProjectCollection server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(serverName)); 
server.EnsureAuthenticated(); 

var versionControlServer = server.GetService<VersionControlServer>(); 
versionControlServer.ConfigureProxy(proxyName); 
Questions connexes