WCF管道连接中止并显示错误:从管道读取错误:无法识别错误109

时间:2012-03-30 09:44:30

标签: wcf callback netnamedpipebinding

我正在使用命名管道绑定设计一个带回调的WCF服务。当我从客户端调用服务时,在服务器端跟踪它显示错误“从管道读取错误:无法识别的错误109”并最终导致管道连接中止。但我完全不知道是什么导致了这个问题。除了堆栈跟踪之外,跟踪不会提供更多信息:

System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(Boolean haveResult, Int32 error,   Int32 numBytes)
System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped)
System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

和堆栈跟踪的另一个109错误

System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(Boolean haveResult, Int32 error, Int32 numBytes)

我怀疑它与基于跟踪活动流的操作的返回值有关。但即使我将操作的返回类型声明为void,我仍然会收到此错误。另一件事是虽然我使用回调,但它不会在操作中调用回调。

任何帮助将不胜感激,或指导我如何调试管道连接中止,我打赌有一些方法来获得更详细的信息。例如如何捕获上面提到的异常(尝试在服务器操作中的catch块没有得到任何东西,客户端调用函数也没有)。

2 个答案:

答案 0 :(得分:1)

原来我在某个阶段没有调用client.Close()函数。因此,当客户端程序退出时,通道中止,服务器显示上述错误

答案 1 :(得分:0)

超大邮件会导致此错误。您是从客户端发送大量数据吗?

我想我在发送枚举时也已经使用了它,但该值不是有效的枚举值。

还有一些关于追踪问题的非常有用的信息here