我在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)
这有什么问题?
答案 0 :(得分:0)
显然,你做的第一个远程调用(ReadSnapshotMsmq)会在服务端抛出异常,因此客户端通道变为“Faulted”。在这种情况下,您无法重复使用客户端频道进一步调用您的服务。
您可以将远程函数调用置于try-catch块中以捕获异常并正常关闭故障通道(或使用新的通道进行后续调用)。