2011-05-15 119 views
9

我在WCF代理中調用方法,其中綁定名爲pipes。目前,代碼失敗(與wmi有關 - 代碼的作用),但是當我在同一個代理中執行另一種方法時,出現此錯誤:寫入管道時發生錯誤:無法識別的錯誤232(0xe8)

寫入管道時發生錯誤:無法識別的錯誤232(0xe8)。

顯然,這並沒有多大幫助。堆棧跟蹤是:

服務器堆棧跟蹤: 在System.ServiceModel.Channels.StreamConnection.BeginWrite(字節[]緩衝液,的Int32偏移的Int32大小,布爾立即,時間跨度超時回調的AsyncCallback,對象狀態) 在系統。 ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult.WriteCore() 在System.ServiceModel.Channels.FramingDuplexSessionChannel.SendAsyncResult..ctor(FramingDuplexSessionChannel信道,消息的消息,時間跨度超時回調的AsyncCallback,對象狀態) 在System.ServiceModel.Channels.FramingDuplexSessionChannel .OnBeginSend(消息消息,TimeSpan超時,AsyncCallback回調,對象狀態) at System.ServiceModel.Channels.OutputChannel.BeginSend(Message message,TimeSpan在System.ServiceModel.Dispatcher.DuplexChannelBinder.BeginRequest(消息消息,TimeSpan超時,AsyncCallback回調,對象狀態) at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartSend(Boolean completedSynchronously) 在System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureOpen(IAsyncResult的結果,布爾completedSynchronously) 在System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureOpen(布爾completedSynchronously) 在System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishEnsureInteractiveInit( IAsyncResult結果,布爾已完成同步) at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.StartEnsureInteractiveInit() at S ystem.ServiceModel.Channels.ServiceChannel.SendAsyncResult.Begin() at System.ServiceModel.Channels.ServiceChannel.BeginCall(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,TimeSpan timeout,AsyncCallback callback,Object asyncState) at System.ServiceModel.Channels.ServiceChannel.BeginCall(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,AsyncCallback callback,Object asyncState) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeBeginService(IMethodCallMessage methodCall,ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息)

異常在[0]重新排列: 在System.Runtime.Remoting.Proxies.Rea lProxy.HandleReturnMessage(即時聊天reqMsg,即時聊天retMsg) 在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData & MSGDATA,的Int32類型) 在x.xxx.xxxxx在(字符串路徑,AsyncCallback的回調,對象狀態) C:\ Users \ project \ AsyncProxy.cs中的x.xproxy.begininstall(String path,AsyncCallback callback,Object state):第38行 位於C:\ Users \ project中xxx.MainForm.begininstall(Object sender,EventArgs e) \ MainForm.cs:line 647 at XPrintV7.MainForm.b__e()in C:\ Users \ Gurdip \ Desktop \ xproject \ MainForm.cs:line 664 at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme) 在System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj) at System.Threading.ExecutionContext .runTryCode(對象userData) 在System.Threading上的System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode代碼,CleanupCode backoutCode,Object userData) 。ExecutionContext.RunInternal(的ExecutionContext的ExecutionContext,ContextCallback回調,對象狀態) 在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回調,對象狀態) 在System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry TME) 在系統.Windows.Forms.Control.InvokeMarshaledCallbacks()

什麼是可能的原因是什麼?

+0

http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF – 2011-05-15 02:10:34

+0

謝謝,我會盡力的。但是,我傳遞給wcf服務的是一個字符串(這是一個文件路徑),一個回調方法委託,以及一個狀態對象(我爲此傳入一個空字符串),但這幾乎不能推動出來? – dotnetdev 2011-05-15 02:13:23

回答

5

錯誤消息告訴你,當客戶端通道堆棧試圖通過命名管道將消息發送到服務發生的Win32錯誤​​。除了僅用您提供的信息進行診斷之外,很難進行診斷,但可能表明由於前面的WMI錯誤導致命名管道的客戶端和服務器端已進入不一致狀態。當WMI異常發生時,您的客戶端代碼可能無法正確管理服務代理實例的狀態。

您應該啓用詳細跟蹤WCF在客戶端和服務雙方,這將爲正在發生的事情更清晰的畫面。

另外,在發佈你的一些客戶端代碼顯示在WMI異常發生時,業務代理是如何在異常處理處理,可以使一個人更準確地回答你的問題。