Требования к брандмауэру DTC? - PullRequest
4 голосов
/ 17 марта 2011

Я пытаюсь настроить среду, в которой TransactionScope, созданный на веб-сервере (asp.net), будет передавать транзакцию через WCF на сервер приложений, а затем через базу данных. Поскольку я вынужден использовать базу данных SQL Server 2005, это часто приводит к тому, что транзакция «превращается» в распределенную транзакцию (в эту TransactionScope может быть включено несколько вызовов службы), что означает, что необходимо включить координатор распределенных транзакций.

Я успешно установил его на локальном компьютере, где веб-сервер и сервер приложений размещены на одном компьютере, подключаясь к удаленной базе данных. DTC связывается через порт 135 для соединений RPC (а также для верхнего диапазона). У меня нет двухблочной установки для тестирования ... для того, чтобы DTC работал, нужно ли открывать порт 135 (с точки зрения брандмауэра) для связи между веб-сервером и сервером приложений или просто для разговора на сервере приложений в базу данных? Я испытываю отвращение от людей, которые занимаются развертыванием, по поводу открытия 135 из Интернета на сервер приложений, и мне было интересно, было ли это вообще необходимо. Мне еще предстоит найти документ в Интернете, который прояснит это для меня.

В некотором роде вопрос заключался в том, чтобы надеяться на некоторое понимание со стороны кого-то, кто мог столкнуться с этим.

С уважением,

GA

1 Ответ

0 голосов
/ 17 марта 2011

Я считаю, что это еще хуже, поскольку DTC использует RPC-вызовы для координации. Возможно, вы сможете исправить их для определенного диапазона портов, но это сложно. У меня был проект со схожими проблемами - использование нескольких подключений даже к одному серверу переводило запросы в DTC. Я закончил рефакторинг кода для совместного использования соединений после безуспешной попытки решить проблемы с брандмауэром. Я мог бы заставить его работать в нашей среде QA, но не на производстве. Существовали некоторые различия: QA - это все виртуальные машины, производство было реальным оборудованием на сервере SQL, а также кластеризованным. Загрузка ОС была максимально возможной, но, возможно, были небольшие различия в исправлениях, поскольку в боксе QA было больше приложений, чем в производственном боксе.

Эта статья MSDN может быть полезна: http://support.microsoft.com/kb/306843

...