【问题标题】:Windows Service And WcfWindows 服务和 Wcf
【发布时间】:2011-07-25 02:39:16
【问题描述】:

我在我的 Windows 服务中以 Onstart 方法使用 WCF 服务,我的服务调用是这样的

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

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

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

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

这有什么问题?

【问题讨论】:

    标签: wcf


    【解决方案1】:

    显然,您进行的第一个远程调用 (ReadSnapshotMsmq) 会在服务端引发异常,因此客户端通道变为“故障”。在这种情况下,您不能重用客户端通道来进一步调用您的服务。

    您可以将远程函数调用放在 try-catch 块中以捕获异常并优雅地关闭故障通道(或为后续调用使用新通道)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多