2

我有一个简单的客户端服务器应用程序,当我启动服务器并通过客户端发送消息时,它使用 WCF(netTcpBinding)一切正常,但是当我手动关闭服务器并再次打开它时(不关闭客户端应用程序全部)下次客户端尝试向服务器发送消息时,我收到此异常(在客户端):

套接字连接被中止。这可能是由于处理我们的消息时出错或远程主机超过了接收超时,或者是潜在的网络资源问题引起的。本地套接字超时为“00:00:59.9843903”。

如果我使用 basicHttpBinding 则不会出现问题。

有谁知道为什么会出现这个问题???谢谢,立然

4

1 回答 1

5

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

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

于 2010-09-06T14:42:35.750 回答