Ocorreu um erro ao gravar no pipe: Erro não reconhecido 232 (0xe8)

9

Eu chamo um método em um proxy WCF, onde a ligação é chamada de pipes. No momento, o código falha com uma exceção (relacionada ao wmi - o que o código faz), mas quando eu executo outro método no mesmo proxy, recebo este erro:

Ocorreu um erro ao gravar no pipe: Erro não reconhecido 232 (0xe8).

Obviamente, isso não ajuda muito. O Stacktrace é:

  

Rastreio da pilha do servidor: em   System.ServiceModel.Channels.StreamConnection.BeginWrite (Byte []   buffer, Int32 offset, tamanho Int32, booleano imediato, TimeSpan timeout,   Retorno de chamada AsyncCallback, estado do objeto) em   System.ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult.WriteCore ()   a   System.ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult..ctor (FramingDuplexSessionChannel   canal, mensagem de mensagem, TimeSpan timeout, retorno de chamada AsyncCallback,   Estado do objeto) em   System.ServiceModel.Channels.FramingDuplexSessionChannel.OnBeginSend (Message   mensagem, timeout TimeSpan, retorno de chamada AsyncCallback, estado do objeto) em   System.ServiceModel.Channels.OutputChannel.BeginSend (Mensagem de mensagem,   TimeSpan timeout, retorno de chamada AsyncCallback, estado do objeto) em   System.ServiceModel.Dispatcher.DuplexChannelBinder.BeginRequest (Message   mensagem, timeout TimeSpan, retorno de chamada AsyncCallback, estado do objeto) em   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartSend (Boolean   concluídaSynchronously) em   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureOpen (IAsyncResult   result, Boolean completedSynchronously) at   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureOpen (Boolean   concluídaSynchronously) em   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureInteractiveInit (IAsyncResult   result, Boolean completedSynchronously) at   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureInteractiveInit ()   em System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.Begin ()   em System.ServiceModel.Channels.ServiceChannel.BeginCall (String   ação, oneway booleano, operação ProxyOperationRuntime, Object [] ins,   TimeSpan timeout, callback AsyncCallback, Object asyncState) em   System.ServiceModel.Channels.ServiceChannel.BeginCall (ação String,   Boolean oneway, operação ProxyOperationRuntime, Object [] ins,   Retorno de chamada do AsyncCallback, Object asyncState) em   System.ServiceModel.Channels.ServiceChannelProxy.InvokeBeginService (IMethodCallMessage   methodCall, operação ProxyOperationRuntime) em   System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage   mensagem)

     

Exceção relançada em [0]: em   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage   reqMsg, IMessage retMsg) em   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & amp;   msgData, tipo Int32) em x.xxx.xxxxx (caminho de seqüência de caracteres, AsyncCallback   callback, estado do objeto) em x.xproxy.begininstall (caminho String,   Retorno de chamada do AsyncCallback, estado do objeto) em   C: \ Users \ project \ AsyncProxy.cs: linha 38 em   xxx.MainForm.begininstall (Object sender, EventArgs e) em   C: \ Users \ project \ MainForm.cs: linha 647 em   XPrintV7.MainForm.b__e () in   C: \ Users \ Gurdip \ Desktop \ xproject \ MainForm.cs: linha 664 em   System.Windows.Forms.Control.InvokeMarshaledCallbackDo (ThreadMethodEntry   tme) at   System.Windows.Forms.Control.InvokeMarshaledCallbackHelper (objeto obj)   em System.Threading.ExecutionContext.runTryCode (Object userData) em   System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (TryCode   código, CleanupCode backoutCode, Object userData) em   System.Threading.ExecutionContext.RunInternal (ExecutionContext   executionContext, retorno de chamada ContextCallback, estado do objeto) em   System.Threading.ExecutionContext.Run (ExecutionContext   executionContext, retorno de chamada ContextCallback, estado do objeto) em   System.Windows.Forms.Control.InvokeMarshaledCallback (ThreadMethodEntry   tme) em System.Windows.Forms.Control.InvokeMarshaledCallbacks ()

Qual é a causa provável?

    
por dotnetdev 15.05.2011 в 03:37
fonte

1 resposta

5

A mensagem de erro informa que o erro Win32 ERROR_NO_DATA ocorreu quando a pilha do canal do lado do cliente tentou enviar uma mensagem para o serviço pelo canal nomeado. É difícil diagnosticar além disso com apenas as informações que você forneceu, mas provavelmente indica que as extremidades cliente e servidor do pipe nomeado entraram em estados inconsistentes como resultado do erro WMI anterior. Possivelmente, seu código do lado do cliente não está gerenciando o estado da instância de proxy de serviço corretamente quando a exceção de WMI acontece.

Você deve ativar o rastreamento detalhado do WCF nos lados do cliente e do serviço, o que fornecerá uma imagem mais clara do que está acontecendo.

Além disso, postar um pouco do código do seu cliente para mostrar onde a exceção do WMI ocorre e como o proxy do serviço é tratado no tratamento de exceção, pode permitir que alguém responda à sua pergunta com mais precisão.

    
por Chris Dickson 16.05.2011 / 13:15
fonte