客户端中止连接时WCF服务器的后果

时间:2016-05-05 17:01:44

标签: .net wcf

我想知道当客户端中止连接时WCF服务器的后果是什么。例如,我知道服务器将继续处理请求。但那后会发生什么?当服务器尝试将响应发送到客户端时会发生什么?

  • 服务器会尝试一次并放弃或尝试多次吗?这是可配置的吗?
  • 服务器尝试将响应发送给客户端多长时间?服务器是否会立即知道出现问题或是否会等待客户确认它永远不会收到?这是可配置的吗?
  • 当服务器最终放弃时,服务器上会抛出异常吗?
  • 是否还有其他副作用可以提醒?

在我的情况下,我正在使用HTTP绑定。是否与其他绑定不同?此外,当我说客户端中止连接时,我说的是调用client.Abort();之类的东西。如果客户端连接“异常”中止,它是否会改变任何内容,例如我从客户端机器上拔下了网线?

1 个答案:

答案 0 :(得分:0)

假设您在没有回调功能的情况下说话: 如果客户端与服务器断开连接,则服务器上不会有任何异常。如果服务器服务在perclient模式下运行,则不会立即销毁服务对象。在percall模式下,您可以实现IDisposable以在调用结束后立即清除任何资源,因为对象将被销毁。 服务器上没有重试方法可以继续尝试将数据发送到客户端,因为客户端和服务器之间的通道将被破坏。

在回拨模式下,您将拥有客户端频道,您可以检查客户端是否已连接,或者您是否尝试使用该频道,它将通过例外。然后,您可以从列表中删除该频道,因为您可以在故障频道上再次呼叫。

如果服务以percall模式运行,则不要调用client.abort(),因为这将创建另一个服务实例。所以它在这种模式下没用。

相关问题