我有一个调用 WCF 服务的编排,这是一个 2 向请求/响应发送端口。像这样:
我一直在想办法让编排在发送形状之前保持在状态。这是希望当出现异常或端点关闭时,我可以恢复编排并让它尝试重新发送到端点。
我尝试将发送/接收形状包装在各种范围形状中,以使其保持在发送形状之上,但无济于事。我已经阅读了 Seroter 的博客,并尝试了他帖子中建议的所有内容:
http://seroter.wordpress.com/2007/01/02/orchestration-handling-of-suspended-messages/
例如,如果我关闭端点并发送给它,我会得到一个
System.ServiceModel.ServiceActivationException:无法激活请求的服务“ https://my-service.svc ”。服务实例将保持挂起状态,直到以管理方式恢复或终止。如果恢复,实例将从其上次持久状态继续,并可能重新引发相同的意外异常。
这是可以预料的。正如它所说,实例在恢复时可能会重新抛出相同的异常(无论我尝试过什么,它都会发生)。
我尝试过的事情:
- 将 Send 形状包装在原子范围内,但在引发异常后仍会暂停。
- 在原子范围内包装 Send 和 Receive 形状,但在编译时出错:
错误 1 原子范围可能不包含或调用包含“使用”端口或服务链接上请求响应操作的发送和相应接收的服务或范围
- 尝试将 Send 和 Receive 形状包装在 Long-Running 范围内并捕获异常,然后使用挂起形状 - 但这只会导致脱水的实例正在等待 WCF 服务的响应。
我不确定我还能尝试什么。基本上我要问的是,我怎样才能让编排在包含的图像中看到的“conWrapper”(或 sendRCMR 上方的任何位置......)形状上持续存在?