我正在使用 MSMQ 和 WCF。现在,MSMQ 可能会脱机,或者 WCF 和目标之间可能存在一些通信错误。我知道我可以订阅 serviceHost 上的 Faulted 事件,当 MSMQ 关闭/离线时,我确实会引发该事件 - 太好了。但是,如何知道发生的故障类型?我需要确定这是某种通信错误,如果是这样,我想在一段时间后重新连接并继续尝试,直到达到“幻数”。
服务没有抛出异常。只是当 MSMQ 下线时,WCF 服务确实出现了故障,但需要知道故障的类型。
谢谢
我正在使用 MSMQ 和 WCF。现在,MSMQ 可能会脱机,或者 WCF 和目标之间可能存在一些通信错误。我知道我可以订阅 serviceHost 上的 Faulted 事件,当 MSMQ 关闭/离线时,我确实会引发该事件 - 太好了。但是,如何知道发生的故障类型?我需要确定这是某种通信错误,如果是这样,我想在一段时间后重新连接并继续尝试,直到达到“幻数”。
服务没有抛出异常。只是当 MSMQ 下线时,WCF 服务确实出现了故障,但需要知道故障的类型。
谢谢
如果不是异常详细信息,正如 Christian K 所建议的那样,您正在寻找,而是为什么 WCF 服务/客户端没有收到其他通信异常,那么原因是 netMsmqBinding 实现了“即发即弃”模式。
WCF 服务通过 MSMQ 管道与客户端完全断开连接,它只侦听 MSMQ 目标队列上的消息。必须将使用 netMsmqBinding 的服务操作配置为单向(返回 void),因为一旦 WCF 客户端成功地将消息放入 MSMQ 传出队列中,它的工作就完成了。假设是 MSMQ 向 WCF 服务提供有保证的消息传递。MSMQ 4.0 将处理您对“重新连接”和“幻数重试”的担忧。