1
votes

My application is deployed on 2 windows azure virtual machines. 1 machine for sql server and the other for the application.

In the application, I am using TransactionScope. So I applied the configuration of transaction on both VMs as shown in the image below.

enter image description here

In addition, I have allowed the Distributed Transaction Coordinator in the Firewall on both machines.

I have a long running process that have a loop, inside each loop i have a separate TransactionScope. Sometimes, not always, I am getting the below exception.

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.

The "System Center Endpoint Protection" is installed on Both VMs, I turned off the real-time protection also with no result.

I tried to run the process on the sql VM, everything worked fine with no exception.

1

1 Answers

1
votes

Actually, I found the root of the problem after several days of searching and investigating. The problem was that the 2 machines were not ping-able by the net bios name. They were ping-able only by IP. After fixing the ping issue. Everything worked fine.