2011-03-17 141 views
4

我试图建立一个环境,其中源于Web服务器(asp.net)的TransactionScope将通过WCF将事务处理流传送到应用程序服务器,然后传送到数据库。由于我不得不使用SQL Server 2005数据库,这通常会导致事务被“提升”为分布式事务(多个服务调用可能会被包装在此TransactionScope中),这意味着需要启用分布式事务处理协调器。DTC防火墙要求?

我已经成功地在本地机器上工作,其中Web服务器和应用服务器托管在同一台机器上,连接到远程数据库。 DTC在端口135上进行RPC连接通信(以及较高的范围)。我没有两个盒子的设置来测试...... DTC工作,端口135需要打开(从防火墙的角度来看)Web服务器和应用程序服务器之间的通信,还是仅仅在应用程序服务器上进行通信到数据库?我从部署人员那里得到关于从网络向应用程序服务器开放135的回推,想知道这是否是必要的。我还没有找到在线文档,为我澄清这一点。

一种边缘问题,希望能从某个人那里得到一些洞见,他们可能会遇到这个问题。

问候,

GA

回答

0

我认为它比这更糟糕的DTC使用RPC调用来协调。您可能可以将这些解决方案固定到某个端口范围,但这很复杂。我有一个类似的问题的项目 - 即使对同一个服务器推荐的查询使用多个连接到DTC。我最终重构了代码以在尝试导航防火墙问题失败后共享连接。我可以在我们的QA环境中使用它,但不能在生产环境中使用。有一些差异:质量保证是所有虚拟机,生产是SQL服务器上的真实硬件,也是集群化的。操作系统负载尽可能相似,但可能存在较小的补丁差异,因为质量保证箱具有比生产箱更广泛的应用程序。

此MSDN文章可能有些用处:http://support.microsoft.com/kb/306843

+0

感谢您的回复。我有解决方案的工作,并没有试图避免DTC(虽然我不需要它,除了SQL Server 2005“为我推广”它)。应用程序服务器和数据库之间的防火墙使用RPC'协调器'的端口135,以及DTC事务的一系列可配置的高端端口(我使用5000 - 5200)。我只是好奇,如果我需要在Web服务器和应用服务器之间的防火墙中打开相同的端口,就像在应用和数据库服务器(特别是135)之间对于通过WCF从Web到应用的事务一样。 – Glenn 2011-03-17 19:43:26