2011-05-15 14 views
9

Llamo a un método en un proxy WCF, donde el enlace se denomina pipes. Por el momento, el código falla con una excepción (relacionada con wmi - qué hace el código), pero cuando luego ejecuto otro método en el mismo proxy, obtengo este error:Se produjo un error al escribir en el conducto: Error no reconocido 232 (0xe8)

Se produjo un error al escribir en la tubería : Error no reconocido 232 (0xe8).

Obviamente, esto no ayuda mucho. StackTrace es:

servidor de Seguimiento de la pila: en System.ServiceModel.Channels.StreamConnection.BeginWrite (Byte de estado [] buffer, Int32 compensado, tamaño Int32, Boolean inmediata, tiempo de espera TimeSpan, callback AsyncCallback, objeto) en Sistema. ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult.WriteCore() en System.ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult..ctor (canal FramingDuplexSessionChannel, mensaje mensaje, TimeSpan tiempo de espera, AsyncCallback de devolución de llamada, el estado Object) en System.ServiceModel.Channels.FramingDuplexSessionChannel .OnBeginSend (mensaje de mensaje, tiempo de espera de TimeSpan, devolución de llamada de AsyncCallback, estado del objeto) en System.ServiceModel.Channels.OutputChannel.BeginSend (mensaje de mensaje, TimeSpan tiempo de espera, AsyncCallback de devolución de llamada, el estado Object) en System.ServiceModel.Dispatcher.DuplexChannelBinder.BeginRequest (mensaje Mensaje, TimeSpan tiempo de espera, AsyncCallback de devolución de llamada, el estado Object) en System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartSend (Boolean completedSynchronously) en System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureOpen (resultado IAsyncResult, Boolean completedSynchronously) en System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureOpen (Boolean completedSynchronously) en System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureInteractiveInit (Resultado IAsyncResult, Boolean completedSynchronously) en System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureInteractiveInit() en S ystem.ServiceModel.Channels.ServiceChannel.SendAsyncResult.Begin() en System.ServiceModel.Channels.ServiceChannel.BeginCall (String action, Boolean oneway, ProxyOperationRuntime operation, Object [] ins, TimeSpan timeout, AsyncCallback callback, Object asyncState) en System.ServiceModel.Channels.ServiceChannel.BeginCall (acción String, oneway Boolean, operación ProxyOperationRuntime, objeto ins [], de devolución de llamada AsyncCallback, de objetos asyncState) en System.ServiceModel.Channels.ServiceChannelProxy.InvokeBeginService (IMethodCallMessage methodCall, operación ProxyOperationRuntime) en System.ServiceModel.Channels.ServiceChannelProxy.Invoke (mensaje de IMessage)

Excepción retractada en [0]: en System.Runtime.Remoting.Proxies.Rea lProxy.HandleReturnMessage (I-Mensaje reqMsg, I-Mensaje retMsg) en System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & MSGDATA, tipo Int32) en x.xxx.xxxxx (Path String, AsyncCallback de devolución de llamada, el estado Object) en x.xproxy.begininstall (ruta de cadena, devolución de llamada AsyncCallback, estado de objeto) en C: \ Users \ project \ AsyncProxy.cs: línea 38 en xxx.MainForm.begininstall (remitente de objeto, EventArgs e) en C: \ Users \ project \ MainForm.cs: línea 647 en XPrintV7.MainForm.b__e() en C: \ Users \ Gurdip \ Desktop \ xproject \ MainForm.cs: línea 664 en System.Windows.Forms.Control.InvokeMarshaledCallbackDo (ThreadMethodEntry tme) en System.Windows.Forms.Control.InvokeMarshaledCallbackHelper (Object obj) en System.Threading.ExecutionContext .runTryCode (Object userData) en System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (Código TryCode, CleanupCode backoutCode, Object userData) en System.Threading.ExecutionContext.RunInternal (ExecutionContext executionContext, ContextCallback de devolución de llamada, el estado Object) en System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback devolución de llamada, objeto de estado) en System.Windows.Forms.Control.InvokeMarshaledCallback (ThreadMethodEntry TME) en Sistema .Windows.Forms.Control.InvokeMarshaledCallbacks()

¿Cuál es la causa probable?

+0

http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF –

+0

Gracias, voy a tratar eso. Pero todo lo que pasar al servicio WCF es una cadena (que es una ruta de archivo), un método delegado de devolución de llamada, y un objeto que es el estado (yo paso en una cadena vacía para eso), eso es apenas empujando el barco sin embargo? – dotnetdev

Respuesta

5

El mensaje de error indica que se produjo el error ERROR_NO_DATA de Win32 cuando la pila de canales del lado del cliente intentó enviar un mensaje al servicio por el conducto especificado. Es difícil diagnosticar más allá de eso con solo la información que ha proporcionado, pero probablemente indica que los extremos del cliente y del servidor de la tubería con nombre han entrado en estados inconsistentes como resultado del error WMI precedente. Es posible que el código del lado del cliente no administre correctamente el estado de la instancia de proxy de servicio cuando ocurre la excepción de WMI.

debería habilitar el rastreo detallado de WCF en ambos lados del cliente y de servicios, que proporcionará una imagen más clara de lo que está pasando.

Además, publicar parte de su código de cliente para mostrar dónde se produce la excepción WMI, y cómo se trata el proxy de servicio en el manejo de excepciones, puede permitir que alguien responda su pregunta con mayor precisión.

Cuestiones relacionadas