2010-09-23 99 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); 
相關問題