c# - DTC 防火墙要求?

标签 c# transactions firewall transactionscope

我正在尝试建立一个环境,在该环境中,源自 Web 服务器 (asp.net) 的 TransactionScope 将通过 WCF 将事务传输到应用程序服务器,然后再传输到数据库。由于我被迫使用 SQL Server 2005 数据库,这通常会导致事务被“提升”为分布式事务(多个服务调用可能包含在此 TransactionScope 中),这意味着需要启用分布式事务协调器。

我已经成功地让它在本地机器上运行,网络服务器和应用程序服务器托管在同一台机器上,连接到远程数据库。 DTC 在端口 135 上为 RPC 连接(以及上限)进行通信。我没有两个盒子的设置来测试...为了 DTC 工作,端口 135 是否需要打开(从防火墙的角度来看)用于 Web 服务器和应用程序服务器之间的通信,或者只是在应用程序服务器上交谈到数据库?我从部署人员那里得到了关于从 Web 到应用程序服务器开放 135 的反对意见,想知道这是否有必要。我还没有在网上找到可以为我阐明这一点的文档。

有点边缘问题,希望从可能遇到过这个问题的人那里得到一些见解。

问候,

遗传算法

最佳答案

我相信它比 DTC 使用 RPC 调用来协调更糟糕。您也许可以将它们固定到某个端口范围,但这很复杂。我有一个有类似问题的项目——甚至对同一台服务器使用多个连接将查询提升到 DTC。在尝试解决防火墙问题失败后,我最终重构了代码以共享连接。我可以让它在我们的 QA 环境中工作,但不能在生产环境中工作。存在一些差异:QA 都是虚拟机,生产是 SQL 服务器上的真实硬件,也是集群。操作系统负载尽可能相似,但可能存在细微的补丁差异,因为 QA 盒比生产盒具有更广泛的应用程序。

这篇 MSDN 文章可能会有一些用处:http://support.microsoft.com/kb/306843

关于c# - DTC 防火墙要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343924/

相关文章:

java - ArangoDB 在事务中使用图形模块

azure - 事件中心错误 : Catching an exception: status-code: 401, 状态描述:未经授权的 TrackingId:xxx

c# - LightSwitch - 使用 FindControl 获取 AutoCompleteBox,在转换时变为 null

javascript - 表单验证 ASP.NET 中的整个页面

sql - 在WHILE LOOP中插入记录时发生奇怪的TRY CATCH行为

reactjs - 如何在ubuntu上为 digital ocean 设置防火墙?

java - 如何指示 Windows 报告我的 Java 应用程序的名称而不是 java.exe

java - 将 C# 转换为 Java。调用泛型类构造函数的 newInstance() 总是返回 NullPointerException

c# - 索引到 ArrayList 的结果出现 InvalidCastException

django - 在连续循环脚本中,数据库数据的更改未反射(reflect)在 Django 查询集中