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

时间:2010-06-02 13:38:06

标签: wcf timeout nettcpbinding

我在没有防火墙的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)at   System.ServiceModel.Channels.SocketConnection.ReadCore(字节[]   缓冲区,Int32偏移量,Int32大小,   TimeSpan超时,布尔结束)...

我调用的方法只返回一个数值,没有别的,所以问题不在超时。如果我使用wsHttpBinding - 它没有问题。此外,我添加了记录到我调用的方法,所以我知道它甚至没有执行。

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

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

1 个答案:

答案 0 :(得分:1)

我对这种误导性的错误信息感到沮丧。如果我没有错,你会在第一秒内得到这个TimeoutException。我可以向您保证您的问题与安全性或序列化问题有关。我把这个问题带到微软的WCF产品组,他们似乎很惊讶,但没有听到任何回复。

首先建议查看NetTcpBinding安全设置。确保客户端和服务具有相同的裸骨安全设置(例如,不是消息加密或传输层安全性)。如果您可以在没有安全性的情况下使其正常工作,请逐步增加安全设置。

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