1

我正在使用命名管道绑定设计带有回调的 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,我仍然会收到此错误。另一件事是虽然我使用了回调,但它并没有在操作内部调用回调。

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

4

2 回答 2

1

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

于 2012-04-01T17:27:57.270 回答
0

过大的消息可能会导致此错误。您是否从客户端发送大量数据?

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

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

于 2012-03-30T10:11:12.587 回答