我正在使用命名管道绑定设计一个带回调的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块没有得到任何东西,客户端调用函数也没有)。
答案 0 :(得分:1)
原来我在某个阶段没有调用client.Close()函数。因此,当客户端程序退出时,通道中止,服务器显示上述错误
答案 1 :(得分:0)