2009-12-06 109 views
0
的CommunicationException每当

我扔在我服务的例外,另一个例外是后马上抛出:在WCF服务抛出异常抛出一个

System.ServiceModel.CommunicationException: There was an error reading from the 
pipe: Unrecognized error 109 (0x6d). ---> System.IO.PipeException: There was an 
error reading from the pipe: Unrecognized error 109 (0x6d). 

我实现IErrorHandler,所以我可以(使用log4net的)日志所有未处理的例外:

bool IErrorHandler.HandleError(Exception error) 
    { 
     if (!(error is FaultException)) 
     { 
      logger.Fatal("Unhandled Exception", error); 
     } 
     return false; 
    } 

任何想法为什么?

+0

我会仔细检查问题是否真的存在于处理程序中。我做了完全相同的事情。总体而言,IErrorHandler是一种有效的方法。 – Alex 2009-12-06 23:23:49

回答

1

问题是客户端调用中止通道,每当我返回一个故障异常。

+0

你做了什么修改来解决这个问题?取消呼叫Abort?用其他东西替换(关闭)? – Roy 2010-09-17 08:37:21

+0

事实上,客户必须致电关闭(或等效,取决于平台) – 2010-10-10 15:48:41

+0

@MeidanAlon:这是如何工作的?您不能在处于故障状态的通道上调用Close,因为它会引发不同的异常 - “通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态。” – Divi 2015-06-15 22:29:39