2010-09-23 57 views
2

在我的公司,我们最近为TeamFoundationServer设置了一个TeamFoundation代理。我写了一个C#应用程序,连接到TFS来查询各种事情。现在,我希望应用程序支持通过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和代理的连接?如果是的话,我该怎么做?

回答

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); 
0

您可以这样做:

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

var versionControlServer = server.GetService<VersionControlServer>(); 
versionControlServer.ConfigureProxy(proxyName); 
相关问题