通信对象System.ServiceModel.Channels.ServiceChannel, 不能用于通信,因为它处于Faulted状态。
当Windows应用程序尝试通过wsDualHttpBinding与作为Windows服务托管的WCF进行通信时,我收到此错误。 WCF用于通过串行端口与设备通信。用于经常通过WCF Windows服务发送命令的Windows应用程序。
这是堆栈跟踪:
堆栈跟踪:at System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrNotOpen() 在System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway,ProxyOperationRuntime操作,Object [] ins, 对象[]出局,TimeSpan超时)at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(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类型)at GridSplitter.CommandServiceReference.ICommandService.SendToMultipleChannel(字符串[] channel,Int32 [] [] locid,String cmd,Int32 cmdData)at GridSplitter.CommandServiceReference.CommandServiceClient.SendToMultipleChannel(字符串[] channel,Int32 [] [] locid,String cmd,Int32 cmdData)at GridSplitter.MainWindow.bwChkAndSendRedeploy_DoWork(对象发送者, DoWorkEventArgs e):11/9/2012 11:05:58 AM
答案 0 :(得分:4)
您的问题是您的代码在服务调用产生故障后使用服务代理的实例(服务引用,由SvcUtil生成或直接从ChannelFactory
创建)。实现WCF的方式,一旦与该代理的调用发生错误,您就无法“重新使用”服务代理。
您需要在lines shown in this good post上为WCF特定要求编写适当的异常处理逻辑。无论您配置代理使用的实际绑定如何,都需要这样做。