C# WCF Proxy ClientBase<T> Disposal 问题是否仍然存在于.Net 4.5+

Does the C# WCF Proxy ClientBase<T> Disposal issue still exist in .Net 4.5+

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

可以在此处找到此问题的完整详细信息... https://coding.abel.nu/2012/02/using-and-disposing-of-wcf-clients ...但总而言之,服务引用生成的代理上的 IDisposable 实现本质上是无条件调用 Close() 而不先检查 。如果从被调用的服务中抛出未处理的异常,这将导致通道出错,然后对代理执行任何操作(包括尝试调用 Dispose())都会导致secondary CommunicationException - 混淆原始异常,并使代理处于不可用状态。考虑到这一点,尽管它实现了 IDisposable 并且 ,但我们无法真正将代理包装在 using{} 构造中很大程度上被视为 WCF 错误。

有几种模式可以处理这个问题,我不打算在这里介绍它们。我需要知道的是,由于它在很大程度上被视为 WCF 错误,它是否已修复?我在互联网上找不到任何暗示 IDisposable 的有缺陷的实现不再有缺陷的东西??

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

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