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

标签 c# .net wcf proxy dispose

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

可以在此处找到此问题的完整详细信息... https://coding.abel.nu/2012/02/using-and-disposing-of-wcf-clients ...但总而言之,服务引用生成代理上的 IDisposable 实现本质上是无条件地调用 Close() 而不首先检查 State。如果从被调用的服务中抛出未处理的异常,这将使 channel 出现故障,然后对代理执行任何操作(包括尝试调用 Dispose())都会产生次级 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 ...这表明它仍然是一个问题。

关于c# - .Net 4.5+ 中是否仍然存在 C# WCF Proxy ClientBase<T> Disposal 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36012141/

相关文章:

c# - WCF messageheader 与 messagebodymember?

jquery - 来自 jquery 的 Restful 服务调用的状态代码 405

c# - 当编译时类型未知时,如何选择方法重载?

c# - 从对 LyncClient.GetClient() 的调用中获取无效对象

c# - C#中的DataBinder.Eval

c# - 将数组反序列化为复杂对象

c# - 如何从一句话中获取网站网址?

.net - 如何强制使用MSBuild版本?

wcf - 远程主机使用 WCF 强制关闭现有连接

c# - 如何使用 C# 访问特定的 XML 元素