2011-05-15 1 views
9

WCF 프록시에서 바인딩을 파이프라는 메서드를 호출합니다. 현재 코드는 wmi와 관련한 예외 (코드와 관련)로 실패하지만 동일한 프록시에서 다른 메소드를 실행할 때이 오류가 발생합니다.파이프에 쓰는 중 오류가 발생했습니다 : 인식 할 수없는 오류 232 (0xe8)

파이프에 쓰는 중 오류가 발생했습니다. : 232 (0xe8) 오류를 인식 할 수 없습니다.

분명히 이것은 많은 도움이되지 않습니다. 스택 트레이스는 :

서버 스택 트레이스 : System.ServiceModel.Channels.StreamConnection.BeginWrite에서 (바이트 [] 버퍼, INT32 오프셋, INT32 크기 부울 즉각 시간 범위의 제한, AsyncCallback 콜백, 객체 상태) 시스템에서. System.ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult..ctor에서 ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult.WriteCore() System.ServiceModel.Channels.FramingDuplexSessionChannel에서 (FramingDuplexSessionChannel 채널, 메시지 메시지, 시간 범위 제한 시간, AsyncCallback 콜백 개체 상태) .OnBeginSend (메시지 메시지, TimeSpan 시간 제한, AsyncCallback 콜백, 개체 상태) at System.ServiceModel.Channels.OutputChannel.BeginSend (메시지 메시지, TimeSpan System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartSend (부울 completedSynchronously에서 System.ServiceModel.Dispatcher.DuplexChannelBinder.BeginRequest (메시지 메시지, 시간 범위 제한 시간, AsyncCallback 콜백 개체 상태) 에서 타임 아웃, AsyncCallback 콜백 개체 상태) ) System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureInteractiveInit에서 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureOpen (부울 completedSynchronously) 에서 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureOpen (IAsyncResult를 결과, 부울 completedSynchronously) (AT IAsyncResult result, Boolean completedSynchronously) at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureInteractiveInit() at S System.ServiceModel.Channels.ServiceChannel.BeginCall (String action, Boolean oneway, ProxyOperationRuntime 작업, Object [] ins, TimeSpan 시간 제한, AsyncCallback 콜백, Object asyncState)에서 ystem.ServiceModel.Channels.ServiceChannel.SendAsyncResult.Begin() at System.ServiceModel.Channels.ServiceChannel.BeginCall에서 System.ServiceModel.Channels.ServiceChannelProxy.InvokeBeginService (methodCall을 IMethodCallMessage, ProxyOperationRuntime 동작)을 에서 (문자열 동작은 부울 일방은 ProxyOperationRuntime 동작은 asyncState 개체 [] 인, AsyncCallback 콜백 개체) System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage 메시지)

[0]에서 예외 재 제기 : at System.Runtime.Remoting.Proxies.Rea System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke에서 lProxy.HandleReturnMessage (iMessage를 reqMsg, iMessage를 retMsg) (MessageData & msgData, INT32 타입) x.xxx.xxxxx에서 (문자열 경로, AsyncCallback 콜백 개체 상태) 에서 C : \ Users \ project \ AsyncProxy.cs의 x.xproxy.begininstall (문자열 경로, AsyncCallback 콜백, 객체 상태) : 38 행 at xxx.MainForm.begininstall (Object sender, EventArgs e) in C : \ Users \ project \ MainForm.cs : 647 에서 C : \ Users \ Gurdip \ Desktop \ xproject \ MainForm.cs의 XPrintV7.MainForm.b__e() : System.Windows.Forms.Control.InvokeMarshaledCallbackDo (ThreadMethodEntry tme)에서에서 System.Windows.Forms.Control.InvokeMarshaledCallbackHelper (Object obj) at System.Threading.ExecutionContext .runTryCode (Object userData)at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (TryCode 코드, CleanupCode backoutCode, Object userData) at System.Threading.시스템에서 System.Windows.Forms.Control.InvokeMarshaledCallback (ThreadMethodEntry의 TME) 에서 System.Threading.ExecutionContext.Run (의 ExecutionContext의 ExecutionContext, ContextCallback 콜백, 객체 상태) 에서 ExecutionContext.RunInternal (의 ExecutionContext의 ExecutionContext, ContextCallback 콜백 개체 상태) .Windows.Forms.Control.InvokeMarshaledCallbacks()

가능한 원인은 무엇입니까?

+0

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

+0

감사합니다. 하지만 wcf 서비스에 전달하는 것은 문자열 (파일 경로), 콜백 메소드 대리자 및 상태 (빈 문자열을 전달합니다) 인 객체입니다.하지만 보트를 거의 내리지 않고 있습니다. – dotnetdev

답변

5

오류 메시지는 클라이언트 쪽 채널 스택이 명명 된 파이프를 통해 서비스에 메시지를 보내려고하면 Win32 오류 ERROR_NO_DATA이 발생했음을 알립니다. 제공 한 정보만으로는 진단 할 수 없지만 앞의 WMI 오류로 인해 명명 된 파이프의 클라이언트 및 서버 끝이 일관성이없는 상태가되었음을 나타냅니다. 클라이언트 측 코드가 WMI 예외가 발생할 때 서비스 프록시 인스턴스의 상태를 올바르게 관리하지 못하는 것일 수 있습니다.

클라이언트와 서비스 측면 모두에서 자세한 WCF 추적을 사용하도록 설정해야합니다. 그러면 어떤 상황이 더 명확한 지 알 수 있습니다.

또한 WMI 예외가 발생하는 위치와 예외 처리에서 서비스 프록시가 처리되는 방법을 보여주기 위해 클라이언트 코드를 게시하면 누군가가 질문에보다 정확하게 대답 할 수 있습니다.