2010-09-06 77 views
2

我有一个简单的客户端服务器应用程序,当我启动服务器并通过客户端everythings发送消息时使用WCF(netTcpBinding)工作正常,但是当我手动关闭服务器并打开它再次(没有关闭客户端应用程序)下次客户端尝试发送消息到服务器时,我得到此异常(在客户端):Socket连接中止 - WCF

套接字连接被中止。这可能是由于我们的消息处理错误或远程主机超出接收超时的错误或网络资源问题。本地套接字超时时间为'00:00:59.9843903'。

如果我使用basicHttpBinding问题不会发生。

是任何人知道为什么会出现此问题? 谢谢, Liran

回答

5

这是预期的行为。关闭服务器时,服务器上的TCP连接已关闭,您无法再从客户端调用它。再次启动服务器将无济于事。您必须捕获客户端上的异常,中止当前代理并创建并打开新代理。

使用BasicHttpBinding它可以工作,因为NetTcpBinding在代理的整个生命周期中使用单个通道(cannel绑定到TCP连接),而BasicHttpBinding为每个调用创建一个新的(它重用现有的HTTP连接或创建一个新连接, t存在)。