0

我正在为TFS 2012编写一个小型C#报告应用程序。

TFS 服务器是远程的,只能通过网络中的 HTTP 代理服务器访问,因为防火墙会阻止直接访问。

代理是在 Internet Explorer 中配置的,所以我可以在 IE 中打开 TFS URL,并且在使用 TFS 时 Visual Studio 会自动使用它。

问题是我的应用程序忽略了 IE 代理设置并尝试直接连接到 TFS 服务器(我在 Wireshark 中看到了这一点),因此在超时后由于防火墙而失败。

这是我使用的代码:

Uri TfsCollectionURL = new Uri("...");
NetworkCredential credential = new System.Net.NetworkCredential(Username, Password, Domain);
TfsTeamProjectCollection collection = new TfsTeamProjectCollection(TfsCollectionURL, credential);
collection.EnsureAuthenticated();
ICommonStructureService projectService = collection.GetService<ICommonStructureService>();
foreach (ProjectInfo project in projectService.ListProjects())
{
    ...
}

申请失败于 。EnsureAuthenticated () 异常:

TF400324:Team Foundation 服务无法从服务器获得...

连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应......

它确实可以在允许直接访问 TFS 服务器的另一个子网中工作。

问题:

如何在我的 C# 应用程序中使用HTTP 代理连接到 TFS?

4

2 回答 2

1

尝试添加 App.config 文件以使用以下代码设置默认代理:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.net>
        <defaultProxy enabled="true" useDefaultCredentials="true"></defaultProxy>
    </system.net>
</configuration>
于 2013-10-24T15:43:43.980 回答
0

您可以直接设置凭据以通过代理:

WebProxy p = new WebProxy("proxyserver.domain.com:8080", true);
p.Credentials = new NetworkCredential("domain\\user", "password");
WebRequest.DefaultWebProxy = p;

在我的场景中,我们有一个用于开发的子网,并且不允许这些帐户/机器访问互联网。因此,我们需要输入上层域代理和那些域凭据才能访问互联网。

于 2013-10-24T16:12:36.187 回答