我正在使用命名管道绑定设计带有回调的 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块没有得到任何东西,客户端调用函数也没有)。