通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态。
我得到这个错误,当Windows应用程序试图通过wsDualHttpBinding作为Windows服务托pipe的WCF通信。 WCF用于通过串口与设备进行通信。 用于通过WCF Windows服务频繁发送命令的Windows应用程序。
这是堆栈跟踪:
堆栈跟踪:在System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrNotOpen()在System.ServiceModel.Channels.ServiceChannel.Call(string操作,布尔单向,ProxyOperationRuntime操作,对象[] ins,对象[]出,TimeSpan超时) .ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息)
- log4net创build日志文件,但不写入它
- Windows服务自动启动和停止,exception处理问题
- 当subprocess死亡时重新启动srvany
- C# – 服务如何设置启动参数
- 在windows上buildbot作为一项服务
exceptionrethrown在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32types)在GridSplitter.CommandServiceReference。 ICommandService.SendToMultipleChannel(String [] channel,Int32 [] [] locid,String cmd,Int32 cmdData)at GridSplitter.CommandServiceReference.CommandServiceClient.SendToMultipleChannel(String [] channel,Int32 [] [] locid,String cmd,Int32 cmdData)at GridSplitter.MainWindow.bwChkAndSendRedeploy_DoWork(Object sender,DoWorkEventArgs e):11/9/2012 11:05:58 AM
您的问题是您的代码正在使用服务代理(服务引用,由SvcUtil生成或由ChannelFactory
直接创建)的实例在服务调用产生故障后。 WCF的实现方式是,一旦与该代理的通话发生故障,就不能“再次使用”服务代理。
你需要编写适当的异常处理逻辑,在WCF特定需求的这个好帖子中显示 。 无论您配置代理使用的实际绑定如何,都需要完成此操作。