在我的公司,我们最近为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和代理的连接?如果是,我该怎么做?
答案 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);