MSDTC 和 COM+ 与基于 Unix 的服务器上的 Oracle 数据库出错

MSDTC and COM+ with Oracle database on Unix based server error out

当具有所需事务的 COM+ 对象尝试与 Oracle 数据库通信时,出现以下错误。

"以下是错误文本....

与底层事务管理器的通信失败。 内部异常: 由于通信问题,MSDTC 事务管理器无法从源事务管理器中提取事务。可能的原因是:存在防火墙并且它没有 MSDTC 进程的例外,两台机器无法通过它们的 NetBIOS 名称找到对方,或者没有为两个事务管理器之一启用对网络事务的支持。 (HRESULT 异常:0x8004D02B) "

<Transaction(TransactionOption.Required)>

相同的代码在某些机器上有效,但在其他机器上无效。

已尝试防火墙(根据 google 搜索结果)。没有防火墙 已尝试删除和添加 COM+ 组件。 尝试过注册表清理器...

欢迎任何意见。

谢谢

我会确认网络 DTC 访问已启用:

找到问题的根本原因。

这是因为在调用堆栈中进行了外部数据库访问(对 sql 服务器)并且 SQL 服务器正在阻止 MDTC 端口号。现已修复。

编辑:

当我说它已修复时,事实证明它不是。

事实上,问题在于默认情况下在 MSDTC 中登记了连接。要禁用它,只需添加 enlist=false;在连接字符串中,它将停止自动登记与 MSDTC 的连接。