【问题标题】:Problem while communicating with WCF service using netTcpBinding使用 netTcpBinding 与 WCF 服务通信时出现问题
【发布时间】:2011-02-26 20:14:24
【问题描述】:

我有一个在没有防火墙的 Windows Server 2008 RC2 IIS 7 上运行的 WCF 服务。当我尝试使用 netTcpBinding 绑定调用它时,我得到了这个异常:

System.TimeoutException: 打开 操作未在 分配的超时时间为 00:00:30。时间 分配给这个操作可能有 是较长超时的一部分。 ---> System.TimeoutException:套接字传输超时后 00:00:30。你已经超过了 在您的绑定上设置超时。时间 分配给这个操作可能有 是较长超时的一部分。 ---> System.Net.Sockets.SocketException: A 连接尝试失败,因为 关联方没有正确 一段时间后回复,或 建立连接失败,因为 连接的主机没有响应
在 System.Net.Sockets.Socket.Receive(字节 [] 缓冲区,Int32 偏移量,Int32 大小, SocketFlags socketFlags) 在 System.ServiceModel.Channels.SocketConnection.ReadCore(字节 [] 缓冲区,Int32 偏移量,Int32 大小, TimeSpan 超时,布尔关闭)...

我调用的方法只是返回一个数值,没有别的,所以问题不在超时。如果我使用 wsHttpBinding - 它可以正常工作。我还在我调用的方法中添加了日志记录,所以我知道它甚至没有执行。

我已完成从here 配置 IIS 的所有步骤。问题是:

  1. 有人知道可能是什么问题吗?
  2. 如何解决/调试此问题 有问题吗?

【问题讨论】:

    标签: wcf timeout nettcpbinding


    【解决方案1】:

    我和你一样对这个误导性的错误信息感到沮丧。如果我没记错的话,你会在第一秒内得到这个 TimeoutException。我可以向您保证您的问题与安全或序列化问题有关。我将此问题提交给 Microsoft 的 WCF 产品组,他们似乎很惊讶,但没有收到任何回复。

    第一个建议是查看 NetTcpBinding 安全设置。确保客户端和服务都具有相同的基本安全设置(例如不是消息加密或传输层安全)。如果你可以让它在没有安全的情况下工作,请逐步增加安全设置。

    第二个建议是一些序列化问题可能会导致服务崩溃:一个空的可空字段、与操作混合的重载方法、模糊的合同名称、无效的强制转换。要调试,请在服务的配置设置中设置跟踪。您可以通过 WCF 服务配置实用程序 (SvcConfigEditor.exe) 轻松完成此操作。运行您的服务获取异常,停止它并使用 WCF 服务跟踪查看器工具打开生成的跟踪日志。这两个工具都带有 .NET(不是 Visual Studio),可以在 Program Files/Windows SDKs 文件夹中找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      相关资源
      最近更新 更多