使用 TransactionScope 的分布式事务

问题描述 投票:0回答:1

我有需要保存在两个组件(A,B)中的数据。 组件 C 使用 WCF 与 B 对话,并使用 .Net Remoting 与 A 对话。 由于 C 使用 WCF 与 B 对话,我正在使用 TransactionScope(使用 WCF 传递事务的问题)。 C和A在同一个系统中。 B 在不同的系统中。 只有在 A 和 B 中 Save 都成功时,才会发生数据提交。 代码如下所示:

`using(TransactionScope)
{
   isSuccessX = serverB.Save(dataX);
   isSuccessY = serverA.Save(dataY);

   if(isSuccessX && isSuccessY)
   {
        TransactionScope.Complete();
   }
}`

A、B、C在同一个系统时,数据保存没有问题。 当 (A,C) 和 B 在不同的系统中时,我们看到错误:“无法解组流动的事务。发生以下异常:与底层事务管理器的通信失败。内部异常:” 我已经允许防火墙中的所有程序\端口。 我允许远程客户端在组件服务中使用 DTC。 关于如何使这项工作有任何想法吗? 关于此工作流的替代方案的建议?

我尝试了 DTCPing,在组件服务中启用了远程客户端。

transactions transactionscope
1个回答
0
投票

systemB 的主机名与systemA 的hosts 文件中提到的主机名不匹配。因此,系统 A 和系统 B 之间不会创建事务。事务是在不修改 ComponentServices 的 LocalDTC 属性中的任何内容的情况下创建的。

© www.soinside.com 2019 - 2024. All rights reserved.