MSDTC中禁用网络访问

时间:2010-12-14 17:49:07

标签: ado.net transactionscope msdtc

我在单元测试中使用System.Transactions.TransactionScope()来插入记录,尝试读取它,并让事务范围回滚,以便在数据库中不留下任何足迹。

1  var rep = new RunRepository();
2  using (var scop = new TransactionScope())
3  {
4     var runId = rep.SaveSwrsRun([Run data elements]); // returns PK RunId
5     var run = rep.FetchSwrsRun(runId);  // returns an object of type Run
6     Assert.IsNotNull(run);
7  }

第5行抛出异常,并显示错误消息

System.Transactions.TransactionManagerCommunicationException:已禁用分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具在MSDTC的安全配置中启用DTC以进行网络访问。

我检查了组件服务管理工具,我的工作站 启用了DTC。我还发现了这个MSDTC Transaction scope problems 线程,它指示我How to enable Network DTC Access

但是当我检查SQL服务器时,已经检查了远程访问复选框。其他人还有其他想法吗?

更多细节......当我强制Repository保持同一个连接,而不是为了第二个Sql语句而返回到另一个连接池时,它可以工作。显然,对第二个sql语句使用不同的连接是触发DTC将事务升级为“分布式模式”(它不应该,因为两个sql语句在同一服务器上,并使用完全相同的连接字符串),   更何况,即使它确实如此,(分布式模式)仍然应该工作。

1 个答案:

答案 0 :(得分:0)

如果您的DTC服务已运行,请单击安全配置,然后在安全设置区域中选中“网络DTC访问”。见图像波纹管。 Network DTC Access