【问题标题】:How to connect to TFS via proxy programmatically?如何以编程方式通过代理连接到 TFS?
【发布时间】:2017-09-29 15:17:28
【问题描述】:

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

【问题讨论】:

    标签: c# tfs


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你可以这样做:

      TfsTeamProjectCollection server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(serverName));
      server.EnsureAuthenticated();
      
      var versionControlServer = server.GetService<VersionControlServer>();
      versionControlServer.ConfigureProxy(proxyName);
      

      【讨论】:

        猜你喜欢
        • 2019-06-11
        • 1970-01-01
        • 2019-05-16
        • 2013-04-15
        • 2013-02-02
        • 1970-01-01
        • 1970-01-01
        • 2018-09-08
        • 2011-10-27
        相关资源
        最近更新 更多