wcf - 如何在发送形状之前保留 BizTalk 业务流程 - 用于重新发送

标签 wcf biztalk biztalk-orchestrations

我有一个调用 WCF 服务的编排,它是一个双向请求/响应发送端口。像这样:

Orchestration

我一直在尝试找出一种方法让编排在发送形状之前保持状态。这是希望当出现异常或端点关闭时,我可以恢复编排并让它尝试重新发送到端点。

我曾尝试将发送/接收形状包裹在各种范围形状中,以使其保持在发送形状之上,但无济于事。我上下阅读了 Seroter 的博客,并尝试了他帖子中建议的所有内容:

http://seroter.wordpress.com/2007/01/02/orchestration-handling-of-suspended-messages/

例如,如果我取下端点并发送给它,我会得到一个

System.ServiceModel.ServiceActivationException: The requested service, 'https://my-service.svc' could not be activated. The service instance will remain suspended until administratively resumed or terminated. If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.

这是意料之中的。正如它所说,该实例在恢复时可能会重新抛出相同的异常(无论我尝试了什么,它都会这样做)。

我尝试过的事情:

  • 将 Send 形状包装在原子范围内,但在抛出异常后它仍然会被挂起。
  • 在原子范围内包装发送和接收形状,但在编译时出现错误:

    Error 1 an atomic scope may not contain or call a service or scope that contains both the send and the corresponding receive of a requestresponse operation on a 'uses' port or servicelink

  • 尝试将 Send 和 Receive 形状包装在长时间运行范围内并捕获异常,然后使用暂停形状 - 但这只会导致脱水实例等待 WCF 服务的响应。

我不确定还有什么可以尝试的。基本上我要问的是,如何让编排在包含的图像中看到的“conWrapper”(或 sendRCMR 上方的任何位置...)形状持续存在?

最佳答案

对于您所描述的内容,您实际上并不需要强制执行编排持久性。

如果端点关闭,或者适配器抛出任何其他错误,消息实例将首先进入重试模式,然后挂起。这可能是您包含的错误消息所指的“实例”。

一旦端点再次运行,您将恢复 Messaging 实例。

这是最常见的情况。

关于wcf - 如何在发送形状之前保留 BizTalk 业务流程 - 用于重新发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749838/

相关文章:

wcf - 如何配置 fiddler 来监控对 IISExpress 中托管的 wcf 服务的 wcf 调用

c# - 取代 BizTalk WCF 服务

ftp - BizTalk 2010 发送 FTPS - 何时需要客户端证书哈希 "thumbprint"?

soa - 如何从 Biztalk 向许多 Web 服务发送消息

BizTalk 消息上下文属性 : datetime when message was published to message box

BizTalk 将无限副本发送到目标文件夹

c# - 让 svcutil 从 C# 文件中获取文档?

c# - WCF - 如何在 C# 代码中指定端点的契约(Contract)?

WCF服务WSDL与域名的链接

.net - 如何使用代码添加自定义 BizTalk 持久点?