C# – Dtcping test passes but still have a Communication with the underlying transaction manager has failed

cmsdtcsql servertransactionstransactionscope

DTCPing tool says everything should be fine. The actual exception is:

System.Transactions.TransactionManagerCommunicationException:

Communication with the underlying transaction manager has failed. —>
System.Runtime.InteropServices.COMException: The MSDTC transaction
manager was unable to push the transaction to the destination
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. (Exception from HRESULT:
0x8004D02A)

The service runs on a VM. Other servers are able to run distributed transactions, so DB box is configured properly.

Best Answer

There is a good article on this subject here: Troubleshooting Problems with MSDTC. It was originally written for BizTalk Server but applies on other server as well.

Since you're running off a VPC, it's possible the DTC shares some identifiers with another machine on the same network. Please check the "Ensure that MSDTC is assigned a unique CID value" chapter in this article (see also http://blogs.msdn.com/b/johnlee/archive/2008/09/09/msdtc-on-virtual-machines.aspx), although I believe DTCPing should tell you about it... You can also try msdtc -uninstall and msdtc -install to fix this.

You should also check if your server are not using some VPN or encryption technology. I kinda remember this can cause issues.