使用Oracle和.NET 4进行DTC问题 - RM_COMMIT_DELIVERY_FAILED_DUE_TO_CONNECTION_DOWN

时间:2013-12-11 13:38:41

标签: c# oracle wcf msdtc

首先介绍一下我们的设置:

  • 基于WCF的应用程序,使用Unity(无单例)
  • 注入EF 4上下文
  • Oracle在单独的物理机器上运行
  • NServiceBus处理通过上述相同上下文访问Oracle的消息

我们遇到的问题,仅在我们的UAT环境中,我们不能在DTC上接收分布式事务锁的情况下发送多条消息。 DTC跟踪告诉我们:

1. TRANSACTION_COMMITTED
2. RM_ISSUED_COMMIT
3. RM_ISSUED_COMMIT
4. RM_ACKNOWLEDGED_COMMIT    
5. RM_COMMIT_DELIVERY_FAILED_DUE_TO_CONNECTION_DOWN

有什么好主意吗?

1 个答案:

答案 0 :(得分:1)

似乎问题出在我们的客户端应用程序WCF配置中。

在我们的框架深处,我们设置TransactionFlow = true,它尝试从客户端开始设置事务范围。如果我们运行我们的请求并触发NServiceBus消息,我们将松开与客户端的链接,并且无法提交事务。

app.config中的 TransactionFlow = false 保存了我们。