当使用Visual Studio Team Services的联机托管版本时,我的单元测试无法连接到在构建代理的本地主机上侦听TCP端口的服务。该服务能够启动并打开TCP端口,但对于单元测试来说似乎无法访问。如何在VSTS构建代理上的本地主机上打开TCP端口?
错误消息:
2017-06-20T12:05:00.8231306Z ## [错误] ------------ System.Net.Http.HttpRequestException:一个发送 请求时发生错误。 2017-06-20T12:05:00.8231306Z ## [error] ---------------- System.Net.WebException:无法连接到远程服务器 2017-06- 20T12:05:00.8231306Z ## [error] -------------------- 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团队服务支持线上?
是的,我们称这些测试集成测试是准确的。太糟糕了,这是不可能的,我们必须建立我们自己的代理人..但谢谢你的答案! –