写入管道时出错:无法识别的错误232(0xe8)

时间:2011-05-15 01:37:15

标签: wcf named-pipes

我在WCF代理中调用一个方法,其中绑定名为pipes。目前,代码失败并出现异常(与wmi相关 - 代码的作用),但是当我在同一代理中执行另一个方法时,我收到此错误:

写入管道时出错:无法识别错误232(0xe8)。

显然,这没有多大帮助。 Stacktrace是:

  

服务器堆栈跟踪:at   System.ServiceModel.Channels.StreamConnection.BeginWrite(字节[]   buffer,Int32 offset,Int32 size,Boolean immediate,TimeSpan timeout,   AsyncCallback回调,对象状态)   System.ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult.WriteCore()   在   System.ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult..ctor(FramingDuplexSessionChannel   通道,消息消息,TimeSpan超时,AsyncCallback回调,   对象状态)   System.ServiceModel.Channels.FramingDuplexSessionChannel.OnBeginSend(消息   消息,TimeSpan超时,AsyncCallback回调,对象状态)at   System.ServiceModel.Channels.OutputChannel.BeginSend(消息消息,   TimeSpan超时,AsyncCallback回调,对象状态)at   System.ServiceModel.Dispatcher.DuplexChannelBinder.BeginRequest(消息   消息,TimeSpan超时,AsyncCallback回调,对象状态)at   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartSend(布尔   完成同步)   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureOpen(IAsyncResult的   结果,布尔完成(异步)at   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureOpen(布尔   完成同步)   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureInteractiveInit(IAsyncResult的   结果,布尔完成(异步)at   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureInteractiveInit()   在System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.Begin()   在System.ServiceModel.Channels.ServiceChannel.BeginCall(String   action,Boolean oneway,ProxyOperationRuntime操作,Object [] ins,   TimeSpan超时,AsyncCallback回调,Object asyncState)at   System.ServiceModel.Channels.ServiceChannel.BeginCall(String action,   Boolean oneway,ProxyOperationRuntime操作,Object [] ins,   AsyncCallback回调,Object asyncState)   System.ServiceModel.Channels.ServiceChannelProxy.InvokeBeginService(IMethodCallMessage   methodCall,ProxyOperationRuntime operation)at   System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即时聊天   消息)

     

在[0]处重新抛出异常:at   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天   reqMsg,IMessage retMsg)at   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培;   msgData,Int32 type)at x.xxx.xxxxx(String Path,AsyncCallback   回调,对象状态)在x.xproxy.begininstall(String path,   AsyncCallback回调,对象状态)   C:\ Users \ project \ AsyncProxy.cs:第38行   xxx.MainForm.begininstall(Object sender,EventArgs e)in   C:\ Users \ project \ MainForm.cs:第647行   XPrintV7.MainForm.b__e()in   C:\ Users \ Gurdip \ Desktop \ xproject \ MainForm.cs:第664行   System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry   tme)at   System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)   在System.Threading.ExecutionContext.runTryCode(Object userData)at   System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode   代码,CleanupCode backoutCode,Object userData)at   System.Threading.ExecutionContext.RunInternal(执行上下文   executionContext,ContextCallback回调,对象状态)at   System.Threading.ExecutionContext.Run(执行上下文   executionContext,ContextCallback回调,对象状态)at   System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry   ())在System.Windows.Forms.Control.InvokeMarshaledCallbacks()

可能的原因是什么?

1 个答案:

答案 0 :(得分:5)

错误消息告诉您,当客户端通道堆栈试图通过命名管道向服务发送消息时,发生了Win32错误ERROR_NO_DATA。仅使用您提供的信息来诊断除此之外很困难,但它可能表明由于前面的WMI错误,命名管道的客户端和服务器端已进入不一致状态。当WMI异常发生时,您的客户端代码可能无法正确管理服务代理实例的状态。

您应该在客户端和服务端启用详细的WCF跟踪,这将更清楚地了解正在发生的事情。

此外,发布一些客户端代码以显示WMI异常发生的位置,以及如何在异常处理中处理服务代理,可能会使某人更准确地回答您的问题。