2016-11-03 11 views
0

Мое приложение развернуто на двух окнах azure виртуальных машин. 1 для сервера sql, а другой для приложения.MSDTC, связь с основным менеджером транзакций не удалась + Windows Azure VM

В приложении, я использую TransactionScope. Поэтому я применил конфигурацию транзакции на обеих виртуальных машинах, как показано на рисунке ниже.

enter image description here

Кроме того, я позволил координатора распределенных транзакций в брандмауэре на обеих машинах.

У меня есть длительный процесс, который имеет цикл, внутри каждого цикла у меня есть отдельный 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, все работало отлично, без каких-либо исключений.

+0

Отметьте мой ответ здесь: https://stackoverflow.com/questions/42115390/communication-with-the-underlying-transaction-manager-has-failed-msdtc/45485690#45485690 –

ответ

0

На самом деле, я нашел корень проблемы после нескольких дней поиска и расследования. Проблема заключалась в том, что 2 машины не могли пинговать по имени чистой биографии. Они пинговали только IP. После исправления проблемы с ping. Все работало нормально.