Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF Net.tcp仅在本地失败_C#_.net_Wcf_Net.tcp - Fatal编程技术网

C# WCF Net.tcp仅在本地失败

C# WCF Net.tcp仅在本地失败,c#,.net,wcf,net.tcp,C#,.net,Wcf,Net.tcp,简短版本:我有一个自我托管的WCF服务,我无法让本地应用程序通过net.tcp与之通信 详细信息:我们的环境有几个自托管服务,它们都通过net.tcp相互通信。有问题的服务(A)公开了一个基于net.tcp的端点,该端点被其他框上的至少3个其他服务使用 我们最近在另一个服务(B)和(a)之间建立了一个新的连接。(B)和(A)都位于同一个框中。此连接拒绝工作,导致以下错误 套接字连接已中止。这可能是由于处理消息时出错、远程主机超过接收超时或基础网络资源问题造成的。本地套接字超时为“00:59:59

简短版本:我有一个自我托管的WCF服务,我无法让本地应用程序通过net.tcp与之通信

详细信息:我们的环境有几个自托管服务,它们都通过net.tcp相互通信。有问题的服务(A)公开了一个基于net.tcp的端点,该端点被其他框上的至少3个其他服务使用

我们最近在另一个服务(B)和(a)之间建立了一个新的连接。(B)和(A)都位于同一个框中。此连接拒绝工作,导致以下错误

套接字连接已中止。这可能是由于处理消息时出错、远程主机超过接收超时或基础网络资源问题造成的。本地套接字超时为“00:59:59.9688006”

内部异常: 远程主机已强制关闭现有连接

我毫不幸运地将绑定配置从(A)复制并粘贴到(B)中。我已经创建了一个能够复制此问题的测试应用程序。它在网络上的任何机器上工作,除了(A)的主机

只是为了好玩,服务(B)能够使用相同的绑定类型与服务(C)通信,服务(C)也位于与(A)相同的框中。我甚至将(C)中的绑定放到(A)中,测试应用程序和(B)中也看到了相同的行为

我已经检查并测试了我能找到的解决net.tcp连接问题的所有解决方案,但运气不佳

我与IT部门和我们的安全官员进行了核实,他们两人都无法从自己的角度考虑任何可能导致这种情况的因素

这是到(A)的第一个本地连接,到目前为止,所有其他连接都来自其他框

更新: 服务器绑定代码段

<netTcpBinding>
    <binding name="TMSNetBinding"
                 closeTimeout="01:00:00"
                 openTimeout="00:00:20"
                 receiveTimeout="01:00:00"
                 sendTimeout="01:00:00"
                 maxBufferPoolSize="600000000"
                 maxBufferSize="30000000"
                 maxReceivedMessageSize="30000000"
                 maxConnections="100"
                 portSharingEnabled="false"
                 listenBacklog="100"
                 transferMode="Buffered"
                 hostNameComparisonMode="StrongWildcard">
        <readerQuotas maxArrayLength="25000"
                        maxBytesPerRead="4096"
                        maxDepth="32"
                        maxNameTableCharCount="30000"
                        maxStringContentLength="300000" />
        <security mode="None">
            <transport clientCredentialType="Windows"
                       protectionLevel="EncryptAndSign" />
        </security>
    </binding>
</netTcpBinding>

<endpoint binding="netTcpBinding"
          bindingConfiguration="TMSNetBinding"
          contract="TMS.Internal.ITMSInternalOperations" />


在代码中,基本服务地址是“net”。tcp://localhost:888/TMS/“

如前所述,还有另一台服务器(C)在非常类似的情况下工作。我花了很长时间比较了这两种服务,唯一的区别是两种服务的自托管实现方式不同。失败的服务有一个过度设计的抽象,我无法准确地确定是哪一部分混乱导致了问题。然而,剥离整个堆并用简单的自托管替换它解决了这个问题

如前所述,还有另一台服务器(C)在非常类似的情况下工作。我花了很长时间比较了这两种服务,唯一的区别是两种服务的自托管实现方式不同。失败的服务有一个过度设计的抽象,我无法准确地确定是哪一部分混乱导致了问题。然而,剥离整个堆并用简单的自托管替换它解决了这个问题

如何定义连接字符串?使用本地主机?还是机器名?这是一个可解析的名称。address=“net。tcp://TMS.dev.company.com:888/TMS“那么,您是否已验证此地址解析为给定计算机上的相同IP地址?您确定没有导致问题的主机文件条目吗?没有防火墙规则可能阻止来自同一台计算机的请求?实际上,WCF中没有任何东西可以阻止这一点,所以它一定是网络堆栈中的某个东西。。防火墙、dns、主机文件条目、路由表等等……是的,是的,是的。我甚至用localhost、127.0.0.1和机器名更新了客户端配置。所有的结果都是一样的,只是这样而已。如果您的服务绑定到特定的接口,那么它可能在127.0.0.1上不可用,因此如果您的所有测试都强制它这样做,那么这可能就是问题所在。您如何定义连接字符串?使用本地主机?还是机器名?这是一个可解析的名称。address=“net。tcp://TMS.dev.company.com:888/TMS“那么,您是否已验证此地址解析为给定计算机上的相同IP地址?您确定没有导致问题的主机文件条目吗?没有防火墙规则可能阻止来自同一台计算机的请求?实际上,WCF中没有任何东西可以阻止这一点,所以它一定是网络堆栈中的某个东西。。防火墙、dns、主机文件条目、路由表等等……是的,是的,是的。我甚至用localhost、127.0.0.1和机器名更新了客户端配置。所有的结果都是一样的,只是这样而已。如果您的服务绑定到一个特定的接口,那么它可能在127.0.0.1上不可用,因此如果您的所有测试都迫使它这样做,那么这可能就是问题所在。