WCF MSDTC Транзакция повышена, но не выполнена - PullRequest
1 голос
/ 25 мая 2011

Я не эксперт по WCF и MSDTC, так что, надеюсь, это что-то простое. У меня есть клиентский сервер, сервер веб-служб и база данных. Я хочу иметь возможность обернуть вызовы на сервер веб-служб в TransactionScope, чтобы в случае сбоя во время операции я мог вернуться назад. Эта установка прекрасно работает, когда все 3 компонента находятся на моей локальной машине. Когда я перемещаю их на отдельные серверы, все работает, пока вызов не будет в TransactionScope.

Я вижу транзакцию, добавленную как на клиентском сервере, так и на сервере веб-служб в разделе dcomcnfg -> Службы компонентов -> Компьютеры -> Мой компьютер -> Координатор распределенных транзакций -> Локальный код неисправности. Я вижу одну и ту же транзакцию на обеих машинах. Проблема в том, что он просто ждет тайм-аут и терпит неудачу. Если я посмотрю в журналах транзакций вызовы веб-службы, которые должны были произойти в TransactionScope, их там нет.

Чего мне не хватает?

Ответы [ 3 ]

1 голос
/ 25 мая 2011

Я не советую использовать TransactionScope через границы службы WCF, но если вам необходимо прочитать это:

http://www.stevefenton.co.uk/Content/Blog/Date/200911/Blog/TransactionScope-and-WCF-Services/

0 голосов
/ 26 мая 2011

В этом случае это стало проблемой брандмауэра. Я отложил мысль о том, что это проблема с брандмауэром, поскольку я видел, что транзакция появилась в списке транзакций сервера службы, но добавление координатора распределенных транзакций в список разрешенных для связи домена в брандмауэре устранило проблему.

0 голосов
/ 25 мая 2011

Недавно я видел похожие симптомы при настройке NServiceBus и NHibernate с MSDTC.

Решение моей проблемы включало проверку используемой аутентификации.

В локальном коде неисправности координатора распределенных транзакций перейдите в свойства и перейдите на вкладку Безопасность. Может случиться так, что вам нужно включить доступ по сети DTC или изменить используемую аутентификацию. Попробуйте без аутентификации проверить, работает ли это, и заблокируйте соответствующим образом.

...