在IsTerminating = true方法中抛出WCF故障仍会关闭通道

时间:2011-09-28 13:51:44

标签: c# wcf .net-4.0

我有一个使用SessionMode.Required状态的WCF服务。我有一个方法,如果被调用(IsTerminating = true)将终止通道。但是,如果满足某些条件,我只想终止。如果我抛出一个故障,通道仍会关闭?如果是这样,处理这种情况的最佳方法是什么。

1 个答案:

答案 0 :(得分:2)

是的,在发送任何回复后,通道将关闭,无论是否是错误。

您似乎只有两种方法可以解决这个问题:

  1. 不要将操作标记为IsTerminating(因为它不是终止 - 根据.Net的含义)而是创建另一种终端操作。
  2. 捕获所有异常以防止引发错误。但是,您可能需要提供一种替代机制来将故障传回客户端。