代码之家  ›  专栏  ›  技术社区  ›  Kamarey

使用netTcpBinding与WCF服务通信时出现问题

  •  2
  • Kamarey  · 技术社区  · 14 年前

    我在没有防火墙的Windows Server 2008 RC2 IIS 7上运行了WCF服务。当我尝试使用netTcpBinding绑定调用它时,会出现以下异常:

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

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

    我已执行所有步骤从 here . 问题是:

    1. 有人知道问题出在哪里吗?
    2. 如何解决/调试此问题 有问题吗?
    1 回复  |  直到 14 年前
        1
  •  1
  •   Emre Aydinceren    14 年前

    我和你一样对这个误导性的错误信息感到沮丧。如果我没有错的话,你会在第一秒内得到这个TimeoutException。我可以向您保证您的问题与安全性或序列化问题有关。我把这个问题告诉了微软的WCF产品组,他们似乎很惊讶,但什么也没回音。

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

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