分布式事务协调器 - 底层提供程序在Open上失败

时间:2014-05-03 08:51:06

标签: msmq msdtc distributed-transactions netmsmqbinding

我有应用程序A和应用程序B,两者都在同一台服务器上。应用程序A使用netmsmqbinding和专用队列调用位于应用程序B中的WCF服务。 B的服务方法被称为,使用实体框架来调用数据库。但是,在B:

中抛出此异常
System.Data.Entity.Core.EntityException: The underlying provider failed on Open. 
---> System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. 
---> System.Runtime.InteropServices.COMException: The MSDTC transaction manager was unable to push the transaction to the destination transaction manager due to communication problems.

可能的原因是:存在防火墙并且它没有MSDTC进程的例外,两台机器无法通过其NetBIOS名称找到对方,或者两者之一未启用对网络事务的支持交易经理。

这是DTC设置 - http://postimg.org/image/rzqxf17t3/

服务器系统管理员确保我不是防火墙问题。因此,我认为这是异常消息的这一部分,我应该检查“两台机器无法通过其NetBIOS名称找到对方”。

总结一下,我的问题是:

  1. 如何检查系统管理员是否告诉了我真相并检查应用程序和数据库服务器之间的端口是否打开?

  2. 如何检查问题是否与NetBIOS名称无关?

  3. 如果使用NetBIOS名称看不到计算机,我该怎么办?

  4. 如果我错过了提供一些有价值的信息,请写信给我,我会添加它。

    提前谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个防火墙问题。我已经修复了使用这篇文章http://support.microsoft.com/kb/250367