1

看来我遇到了Microsoft分布式事务处理协调器(MSDTC)相关问题。这是MSDTC配置问题吗?

情景

我使用的TransactionScope,并在单独的范围击中不同服务器上的两个不同的数据库(例如,DB_A运行Windows Server 2003和DB_B运行Windows Server 2008)。一个数据库使用Entity Framework 4.0访问,另一个使用普通的ADO.NET API访问。

当我从我的开发机器(运行WinXP)运行应用程序时,它会提交并准确回滚这两个连接。但是,当我运行该应用程序并部署到另一台服务器上时(例如运行Windows Server 2003的WAS_A),它会正确提交,但在发生异常情况时不会回滚两台服务器上的数据库活动。

我认为这将是WAS_A上的MSDTC配置问题。所以我去了MSDTC - >安全配置,并检查了所有可用的选项(正如我以前在其他机器上所做的那样)。但我仍面临同样的问题。

寻找专家意见。 :)

回答

0

我相信你需要看看Enabling Transaction Flow。具体来说,看一看在TransactionScope and WCF Services描述一个多么错误和其他完整:

在第二个WCF服务调用的错误不是回滚在前面的WCF服务调用所做的更改... 为了在你的客户创造一个环境事务,并确保它是由您的WCF服务...

文章详细说明了以下步骤:

  • 配置您与绑定
  • 装饰你与[TransactionFlow(TransactionFlowOption)]
  • 接口装饰你的方法与[OperationBehavior(TransactionScopeRequired)]
  • 可选带Transaction Binding *

更新您的连接字符串*注:这是在我看来是可选的。