【问题标题】:How to open TCP port on localhost on VSTS build agent?如何在 VSTS 构建代理上打开本地主机上的 TCP 端口?
【发布时间】:2017-06-21 04:46:22
【问题描述】:

使用 Visual Studio Team Services 的在线托管版本时,我的单元测试无法连接到在构建代理的本地主机上侦听 TCP 端口的服务。该服务能够启动并打开 TCP 端口,但单元测试似乎无法访问。

错误信息:

2017-06-20T12:05:00.8231306Z ##[错误]------------ System.Net.Http.HttpRequestException:发送时出错 请求。 2017-06-20T12:05:00.8231306Z ##[错误]---------------- System.Net.WebException:无法连接到远程服务器 2017-06-20T12:05:00.8231306Z ##[错误]-------------------- System.Net.Sockets.SocketException:无法建立连接 因为目标机器主动拒绝了 127.0.0.1:41670

打开 TCP 端口的服务启动:

    public void Start()
    {
        HttpPort = ObtainFreePort();
        TcpPort = ObtainFreePort();
        ClusterVNode node = EmbeddedVNodeBuilder.AsSingleNode()
            .WithInternalTcpOn(new IPEndPoint(IPAddress.Loopback, TcpPort))
            .WithExternalTcpOn(new IPEndPoint(IPAddress.Loopback, TcpPort))
            .WithInternalHttpOn(new IPEndPoint(IPAddress.Loopback, HttpPort))
            .WithExternalHttpOn(new IPEndPoint(IPAddress.Loopback, HttpPort))
            .AddExternalHttpPrefix($"http://+:{HttpPort}/")
            .RunProjections(ProjectionsMode.All)
            .StartStandardProjections()
            .RunInMemory()
            .Build();
        node.StartAndWaitUntilReady().Wait();
    }

    static int ObtainFreePort()
    {
        using (var sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
        {
            sock.Bind(new IPEndPoint(IPAddress.Loopback, 0));
            var port = ((IPEndPoint)sock.LocalEndPoint).Port;
            sock.Close();
            return port;
        }
    }

这在我的本地机器上工作 :) 这在 Visual Studio Team Services 在线中不支持吗?

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    如果您使用托管代理,则无法打开端口或更改有关机器配置的任何内容。您需要为构建设置自己的代理。

    此外,如果测试需要 TCP 通信,则它不再是单元测试。单元测试没有外部依赖。

    【讨论】:

    • 是的,我们准确地称这些测试为集成测试。太糟糕了,这是不可能的,我们必须建立自己的代理。但感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    相关资源
    最近更新 更多