wcf中实用net.tcp绑定,在本机可以连接,但是其他机器上就不可以?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wcf中实用net.tcp绑定,在本机可以连接,但是其他机器上就不可以?相关的知识,希望对你有一定的参考价值。

C#下实现的。本机使用的是192.168.1.100,连接的机器使用的是192.168.1.110

参考技术A 应该是你没有部署的原因把,iis7以上才可以部署net.tcp

奇怪的 WCF net.tcp 异常

【中文标题】奇怪的 WCF net.tcp 异常【英文标题】:Strange WCF net.tcp exception 【发布时间】:2011-04-07 15:15:32 【问题描述】:

我有一个带有 net.tcp 传输的 WCF 客户端/服务。当我在客户端打开 WCF 跟踪时,我在跟踪中看到以下错误(请参阅服务跟踪查看器的屏幕截图)。奇怪的是,WCF 正在处理和恢复这个错误,而我的客户端没有收到任何异常并且它继续工作。此异常经常发生,随机发生,但不是在每个 Web 方法调用中发生。 客户端(windows XP)身份验证是windows,服务由SPN标识,服务自托管在NLB(windows server 2003)后面的windows服务上。 谁能解释一下这里发生了什么。

来自跟踪 xml 的异常堆栈跟踪是:

<ExceptionString>
System.ServiceModel.Security.MessageSecurityException: The server rejected the upgrade request. ---&gt; System.ServiceModel.ProtocolException: Error while reading message framing format at position 0 of stream (state: ReadingUpgradeRecord) ---&gt; System.IO.InvalidDataException: More data was expected, but EOF was reached.
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
</ExceptionString>

:

【问题讨论】:

作为背景,我们的一些用户报告了许多异常,我正在调查为什么只有一些 PC 似乎有它。因此,我在自己的 PC 上启动了服务跟踪,我很惊讶,因为客户端从未收到这些异常,WCF 正在吞噬它们。我在想如果这个 MessageSecurityException 最终导致一些客户端得到真正的异常。一些客户端记录此异常:无法连接到 net.tcp://myservice:9501/SomeService。连接尝试持续了 00:00:21.3873440 的时间跨度。 TCP 错误代码 10060: 你提到了 NLB。您是否使用粘性会话(会话亲和性)? 否 NLB 会话关联在端口规则中为无。该服务正在使用具有 2 分钟空闲超时和 1 分钟租赁超时的自定义 net.tcp 绑定。但是我发现我们不小心使用了 persession instancecontextmode,因为有人认为这是默认设置。我会尽快将其更改为 percall。 【参考方案1】:

不确定真正的问题可能是什么,以及它是否与流媒体有关(我会深入探讨)。无论如何,您可以尝试在服务器端捕获异常并抛出 CommunicationException

catch (Exception ex)

    throw new CommunicationException(ex.Message, ex);

这样客户端代理不应该忽略异常并且它的状态应该是“故障”。

【讨论】:

以上是关于wcf中实用net.tcp绑定,在本机可以连接,但是其他机器上就不可以?的主要内容,如果未能解决你的问题,请参考以下文章

WCF net.tcp - 目标机器拒绝连接

WCF 错误“找不到与具有绑定 NetTcpBinding 的端点的方案 net.tcp 匹配的基地址”

用于 net.tcp 绑定的 WCF url 重写

使用私钥加入 SSL .crt 证书以用于 WCF 的 Net.Tcp 绑定

WCF net.tcp 绑定:托管多个服务是不是需要端口共享?

如何解决 C# IIS 托管的 WCF NET TCP 服务超时问题