我想知道当客户端中止连接时WCF服务器的后果是什么。例如,我知道服务器将继续处理请求。但那后会发生什么?当服务器尝试将响应发送到客户端时会发生什么?
在我的情况下,我正在使用HTTP绑定。是否与其他绑定不同?此外,当我说客户端中止连接时,我说的是调用client.Abort();
之类的东西。如果客户端连接“异常”中止,它是否会改变任何内容,例如我从客户端机器上拔下了网线?
答案 0 :(得分:0)
假设您在没有回调功能的情况下说话: 如果客户端与服务器断开连接,则服务器上不会有任何异常。如果服务器服务在perclient模式下运行,则不会立即销毁服务对象。在percall模式下,您可以实现IDisposable以在调用结束后立即清除任何资源,因为对象将被销毁。 服务器上没有重试方法可以继续尝试将数据发送到客户端,因为客户端和服务器之间的通道将被破坏。
在回拨模式下,您将拥有客户端频道,您可以检查客户端是否已连接,或者您是否尝试使用该频道,它将通过例外。然后,您可以从列表中删除该频道,因为您可以在故障频道上再次呼叫。
如果服务以percall模式运行,则不要调用client.abort(),因为这将创建另一个服务实例。所以它在这种模式下没用。