Это вообще актуальный вопрос? У меня есть приложение .NET для Windows, использующее MSTDC, и оно выдает исключение:
System.Transactions.TransactionManagerCommunicationException: доступ к сети для диспетчера распределенных транзакций (MSDTC) отключен. Включите DTC для доступа к сети в конфигурации безопасности для MSDTC с помощью инструмента администрирования служб компонентов ---> System.Runtime.InteropServices.COMException (0x8004D024): диспетчер транзакций отключил поддержку удаленных / сетевых транзакций. (Исключение из HRESULT: 0x8004D024) в System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction (UInt32 propgationTokenSize, Byte [] propgationToken, IntPtr managedIdentifier, Guid & transactionIdentifier, OletxTransactionLevelIsolaction).
Я выполнил руководство Kbalertz, чтобы включить MSDTC на ПК, на котором установлено приложение, но ошибка все еще возникает.
Мне было интересно, была ли это проблема с базой данных? Если да, то как я могу это решить?
источник
Ответы:
Используйте это для Windows Server 2008 R2 и Windows Server 2012 R2
Щелкните Пуск , щелкните Выполнить , введите dcomcnfg и затем щелкните ОК, чтобы открыть Службы компонентов .
В дереве консоли щелкните, чтобы развернуть Службы компонентов , щелкните, чтобы развернуть Компьютеры , щелкните, чтобы развернуть Мой компьютер , щелкните, чтобы развернуть Координатор распределенных транзакций, а затем щелкните Локальный DTC .
Щелкните правой кнопкой мыши Local DTC и выберите Свойства, чтобы отобразить диалоговое окно Local DTC Properties .
Щелкните вкладку Безопасность .
Установите флажок «Доступ к сети DTC» .
Наконец, установите флажки «Разрешить входящий» и «Разрешить исходящий» .
Нажмите Применить , ОК .
Появится сообщение о перезапуске службы.
Нажмите ОК и все.
Ссылка: https://msdn.microsoft.com/en-us/library/dd327979.aspx
Примечание. Иногда сетевой брандмауэр на локальном компьютере или сервере может прервать ваше соединение, поэтому убедитесь, что вы создали правила для «Разрешить входящее» и «Разрешить исходящее» подключение для
C:\Windows\System32\msdtc.exe
источник
msdtc.exe
:c:\windows\system32\msdtc.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security
. Больше информации о свойствах здесь .Вам вообще нужен MSDTC? Эскалация, с которой вы сталкиваетесь, часто вызывается созданием нескольких подключений в пределах одного TransactionScope.
Если он вам действительно нужен, вам необходимо включить его, как указано в сообщении об ошибке. В XP:
источник
Я обнаружил, что лучший способ отладки - использовать инструмент Microsoft под названием DTCPing.
У меня были проблемы с тарифом на проезд в нашей старой корпоративной сети, и у меня есть несколько советов:
По моему опыту, если DTCPing может установить соединение DTC, инициированное от клиента и инициированное с сервера, ваши транзакции больше не являются проблемой.
источник
Можно также увидеть здесь о том , как включить MSDTC от services.msc контрольной панели.
источник
MSDTC должен быть включен в обеих системах, как на сервере, так и на клиенте.
Также убедитесь, что между системами нет брандмауэра, блокирующего RPC.
DTCTest - приятное маленькое приложение, которое поможет вам устранить любые другие проблемы.
источник
@ Дэн,
Только распределенные транзакции - те, которые включают более одного соединения. Вдвойне убедитесь, что вы открываете только одно соединение в рамках транзакции, и оно не будет увеличиваться - производительность также будет намного лучше.
источник