.Net 4.5+中是否仍存在C#WCF代理ClientBase <t>处置问题

时间:2016-03-15 13:03:21

标签: c# .net wcf proxy dispose

在早期版本的C#.Net中,处理WCF代理时会出现问题(服务引用生成的客户端) - 这是否仍然存在于.Net 4.5 +中?

这个问题的全部细节可以在这里找到...... https://coding.abel.nu/2012/02/using-and-disposing-of-wcf-clients ...但总结一下,本质上是服务参考生成的代理上的 IDisposable 实现,无条件地称为关闭()而没有先检查状态。如果从被调用的服务中抛出未处理的异常,这将导致通道出错,然后对代理执行任何操作(包括尝试调用 Dispose())将导致次要 CommunicationException - 混淆原始异常,并使Proxy处于不可用状态。考虑到这一点,尽管它实现了 IDisposable ,并且 主要被认为是WCF错误,但实际上无法将代理包装在using {}构造中

有几种模式可以解决这个问题,我不会在这里介绍它们。我需要知道的是,因为它在很大程度上被认为是一个WCF错误,它已被修复了吗?我在interweb上找不到任何暗示IDisposable的有缺陷的实现不再有缺陷?

更新:我刚发现这个...... https://msdn.microsoft.com/en-us/library/aa355056(v=vs.110).aspx ......这表明它仍然是一个问题。不敢相信它尚未修复。自WCF首次出现以来,这个问题一直存在。在这些代理上实现IDisposable有什么意义?

1 个答案:

答案 0 :(得分:3)

更新:我刚发现这个...... https://msdn.microsoft.com/en-us/library/aa355056(v=vs.110).aspx ......这表明它仍然是一个问题。