所以有人(好吧是我)没有意识到你需要在使用后关闭WCF代理。
这有多糟糕?它会导致什么样的问题。
由于垃圾收集,关闭资源是否只是延迟 - 或者我是否真的担心应用程序池过早回收等问题?
实际上我遇到的ASMX比WCF代理要多得多 - 所以同样的问题也适用于ASMX。
显然,现在我知道这个我会逐渐修复它,但是会很感激输入这个有多糟糕吗?
答案 0 :(得分:4)
WCF服务具有默认超时。如果您不关闭它,服务将等到超时。
WCF还有一个最大并发呼叫,默认值为10.
因此,如果您不关闭连接,则每分钟只能进行10次呼叫。 (假设默认设置)
以下是有类似问题的人:
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/d58ee1c6-032b-40f3-b734-6628f3991bb2/
答案 1 :(得分:2)
您可以安全地重复使用WCF连接,只需要额外注意检查它是否处于故障状态。
答案 2 :(得分:2)
作为一般指南,当您希望逐步修复此问题时,请不要使用using语句包装您的代理,我看到很多人这样做,我一直这样做我读了IDesign的一篇文章,这样做可能会导致Dispose抛出异常并掩盖一个真正的异常,在try / catch中显式关闭你的代理,如果close导致异常,则使用Abort进行资源清理。 / p>
编辑:如下面的评论所述,这适用于WCF代理。