我似乎遇到了与Microsoft分布式事务处理协调器(MSDTC)相关的问题。
SCENARIO
我正在使用TransactionScope,在单一范围内,它会在不同的服务器上访问两个不同的数据库(例如,运行Windows Server 2003的 DB_A 和运行Windows Server 2008的 DB_B )。使用Entity Framework 4.0访问一个数据库,使用普通ADO.NET API访问另一个数据库。
当我从开发机器(运行WinXP)运行应用程序时,它会准确地提交和回滚两个连接。但是,当我运行应用程序,部署在另一台服务器上(例如 WAS_A 运行Windows Server 2003)时,它正确提交,但是在异常的情况下不会回滚两台服务器上的数据库活动。 / p>
我认为这将是 WAS_A 上的MSDTC配置问题。所以我去了MSDTC - >安全配置并检查所有可用选项(正如我之前在其他机器上所做的那样)。但我仍然面临同样的问题。
寻找您的专业意见。 :)
答案 0 :(得分:0)
我相信你需要调查Enabling Transaction Flow。具体来说,看看TransactionScope and WCF Services:
中描述的错误和另一个错误第二个WCF服务调用中的错误是没有回滚在先前的WCF服务调用中所做的更改... 为了在您的客户端创建环境事务并确保它由WCF服务使用...
然后,本文详细介绍了以下步骤:
transactionFlow
[TransactionFlow(TransactionFlowOption)]
[OperationBehavior(TransactionScopeRequired)]
Transaction Binding
* *注意:我认为这是可选的。