如何通过编程方式通过代理连接到TFS?

时间:2010-09-23 09:49:19

标签: c# tfs

在我的公司,我们最近为TeamFoundationServer设置了TeamFoundation代理。我编写了一个C#应用程序,它连接到TFS以查询各种内容。现在,我希望该应用程序也支持通过TFS代理连接。由于我对TFS并不熟悉,我遇到了一些困难。理想情况下,我希望应用程序只“知道”TFS代理并让它像普通的TFS一样运行。这甚至可能吗?

我正在做的是这样的事情:

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

如果serverUriString是TFS(例如“http://MyTfs:8080”),则此工作正常。当我用TFS代理替换它(例如“http://MyTfsProxy:8081”)时,我得到一些非特定的TeamFoundationServiceUnavailableException,最后它表明发生了一个http 404错误。 404对我来说没有多大意义,我能够ping服务器,我可以从浏览器连接到它,Visual Studio也可以加入它。我是否需要设置与TFS和代理的连接?如果是,我该怎么做?

2 个答案:

答案 0 :(得分:6)

AddProxy()方法用于向TFS服务器注册代理服务器列表,以便客户端可以自动检测&使用代理服务器。

如果您只想将客户端配置为使用代理服务器,则没有属性可以执行此操作。您必须设置注册表项或未记录的环境变量。

对于TFS2008客户端,注册表项为:

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

对于TFS2010客户端,注册表项为:

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

在任一TFS版本中,您都可以设置未记录的环境变量:

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

答案 1 :(得分:0)

你可以这样做:

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

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