无法连接到net.tcp:连接尝试持续了一段时间

在远程构建机器上,运行unit testing时出现以下错误。

测试方法MyNameSpace1.MyNameSpace2.Service.Test.MyPath.XYZServiceTest.FindRecord引发exception:System.ServiceModel.EndpointNotFoundException:无法连接到net.tcp://localhost/MyABCServices/XYZService.svc。 连接尝试持续时间跨度为00:00:02.0086605。 TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:808。 —> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:808

我对这台构建机器的访问权限非常有限。 我无法在构建机器上访问iis,也无法访问我在本地开发机器上执行的服务。 unit testing工作在我的本地开发机器上,但它们在构建机器上运行到上面提到的错误。

我该怎么做才能调试此错误? 我看过像检查防火墙等的东西但是我不知道怎么做? 我无法检查此服务的Windows服务是否已在构建计算机上启动并运行。 我试图登录到构建机器或将我的IIS连接到这台远程机器,但我不能。

对我来说最常见的问题是Windows服务Net.Tcp侦听器适配器未在主机上运行。

还要检查IIS Web应用程序以确保Enabled Protocols包含net.tcp。 例如我有“http,net.tcp”,在我的绑定中我有“http :: 94:,net.tcp:194:

我不知道有什么好方法可以远程检查IIS配置是否正确或Windows服务是否正在运行。 您没有可以为您查看这些值的服务器管理员吗?

启动Net.Tcp侦听器适配器服务已修复此问题。

启动Net.Tcp侦听器适配器服务已修复此问题。

127.0.0.1:808实际IP:错误中报告的端口? 如果是这样,那么你需要修复IP( 127.0.0.1localhost同义,因此这将是你的本地计算机)。

否则,这看起来像防火墙问题。

防火墙有两种常见的来源:

  • 路由器
  • OS

路由器防火墙通常位于将内部网络连接到Internet的路由器上。 在这些情况下,您(或有访问权限的人)将需要登录路由器并将端口转发到计算机的IP。 仅当尝试通信的两台计算机不在同一内部网络上时,才需要这样做。
例如,如果您的计算机通过Internet连接到服务器,则需要设置端口转发。 如果两台计算机位于同一办公室的同一网络上,则不需要端口转发(大型公司不常见这种情况,但是有一个IT或网络人员来处理端口问题)。

假设您的服务器运行的是Windows,则需要具有Admin(?)访问权限的用户才能登录并打开端口或允许您的服务接受传入的请求。 由于您表示您无权访问服务器,因此我建议负责服务器的人员validation配置。

在我阅读它时,“unit testing”显然需要一些本地主机地址的WCF net.tcp端点。 所以,为了工作你也可以

  • 在构建服务器上添加所需的服务,该服务器可能是共享服务器,或者由另一个团队拥有,或者我不了解的其他一些问题,或者
  • 更改unit testing,以便它不会期望真正的实时WCF服务,而是模拟或伪造的服务。

我(显然)推荐第二种选择。