1

我在 windows sever 2003 机器上托管了一个基于 WCF 的 Web 服务。数据库是 solaris 上的 Oracle 10G。Web 服务广泛使用 transactionscope,并在某些地方使用 ado.net 事务。大多数事务只涉及一种资源(多个 oracle 存储过程调用)。其中一些是两种资源(MSMQ 和 oracle 存储过程)。鉴于此,必须在 Windows 机器上启用网络 DTC。它已经启动了 MSDTC 服务。没有从 Web 服务客户端到 Web 服务的事务流。它似乎在没有启用网络 DTC 的情况下工作,但我想确定。

该平台是 .Net 2.0 SP1 + 3.0(用于 WCF)。Oracle驱动是ODP.Net v11.1.0.6

4

2 回答 2

1

我相信不需要启用网络 DTC。唯一的要求是 MSDTC 和 OracleMTSRecoveryService 服务都已启动。我可以使用 DTC 组件服务查看器控制面板应用程序查看发生的事务。

于 2009-11-11T02:58:58.023 回答
0

如果客户端事务没有流动或者没有多个持久资源,事务管理器将不会将事务提升为分布式事务。

您可以通过访问 Transaction 类的 TransactionInformation 属性来检查事务标识符。

此类具有 DistributedIdentifier 属性。如果事务未升级为分布式事务,则 DistributedIdentifier 将为 Guid.Empty。

于 2009-08-31T02:37:28.683 回答