Windows服务和Wcf

时间:2011-03-29 08:52:39

标签: wcf

我在Onstart方法的Windows服务中使用WCF服务我的服务调用就像这样

    try
       {
           using (BackupUtilityWcfService.BackupUtilityClient oBackupUtilityClient =                 new BackupUtilityWcfService.BackupUtilityClient())
           {                  
                oBackupUtilityClient.ReadSnapshotMsmq();
                 oBackupUtilityClient.ReadReplicationMsmq();
                  oBackupUtilityClient.ReadReplicationCompleteMsmq();
             }
          }
       }
        catch
        {
       }

但是当我调用我的WCF服务时,我得到了这个错误

无法启动服务。 System.ServiceModel.CommunicationObjectFaultedException:通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态。

服务器堆栈跟踪:    在System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout)

这有什么问题?

1 个答案:

答案 0 :(得分:0)

显然,你做的第一个远程调用(ReadSnapshotMsmq)会在服务端抛出异常,因此客户端通道变为“Faulted”。在这种情况下,您无法重复使用客户端频道进一步调用您的服务。

您可以将远程函数调用置于try-catch块中以捕获异常并正常关闭故障通道(或使用新的通道进行后续调用)。