1

我在同一台服务器上有应用程序 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

0 回答 0