MSDTC,与底层事务管理器的通信失败 + Windows Azure VM

MSDTC, Communication with the underlying transaction manager has failed + Windows Azure VM

我的应用程序部署在 2 个 windows Azure 虚拟机上。一台机器用于 sql 服务器,另一台用于应用程序。

在应用程序中,我正在使用 TransactionScope。所以我在两个虚拟机上应用了事务配置,如下图所示。

此外,我在两台机器的防火墙中都允许分布式事务处理协调器。

我有一个很长的 运行ning 过程,它有一个循环,在每个循环中我有一个单独的 TransactionScope。有时,并非总是如此,我会遇到以下异常。

Communication with the underlying transaction manager has failed. ------- Inner Exception: The MSDTC transaction manager was unable to pull the transaction from the source transaction manager due to communication problems. Possible causes are: a firewall is present and it doesn't have an exception for the MSDTC process, the two machines cannot find each other by their NetBIOS names, or the support for network transactions is not enabled for one of the two transaction managers.

两个虚拟机都安装了"System Center Endpoint Protection",我关闭了实时保护也没有结果。

我尝试 运行 sql VM 上的进程,一切正常,无一例外。

其实经过几天的查找和排查,我找到了问题的根源。问题是这两台机器无法通过 net bios 名称 ping 通。它们只能通过 IP ping 通。解决 ping 问题后。一切正常。