【发布时间】:2010-12-08 12:56:06
【问题描述】:
当从我的 WCF 服务返回 FaultException 时,我需要中止通道而不是关闭它。我的客户端和服务都可以使用这种方法正常工作,但是在服务上实现 IErrorHandler 并记录任何异常之后,我可以看到在客户端上调用 Abort 会导致服务记录:
System.ServiceModel.CommunicationException:套接字连接被中止...
我不想用这些信息污染我的服务日志,只想记录与服务相关的错误。我知道我显然可以停止记录任何 CommunicationExceptions,但我的服务也是其他服务的 WCF 客户端,并且应该记录这些服务引发的 CommunicationExceptions。
我怎样才能阻止它这样做?
【问题讨论】:
-
你能解释一下为什么你会中止而不是关闭吗?它可能会帮助您获得更好的答案。
-
WCF 有一个众所周知的问题,即在发生异常后在通道上调用 Close() 会引发异常本身,从而掩盖原始异常。因此,一旦通道发生故障,您将使用 Abort() 而不是 Close()。请参阅下面 Tomas 的链接以及他在博客文章中引用的链接。
标签: wcf logging error-handling ierrorhandler