我在服务器1上托管了我的Webapp,在服务器2上托管了我的数据库
但我得到了以下错误
“与基础交易经理的沟通失败了。”
我用Google搜索并发现一个帖子,其中提到了DTC(分布式事务)的问题我在server2(DB服务器)上启用了DTC,并在防火墙中对它进行了例外处理。
但仍然是同样的错误。
这是完整的堆栈跟踪
消息:System.Transactions.TransactionManagerCommunicationException:与基础事务管理器的通信失败。 ---> System.Runtime.InteropServices.COMException:由于通信问题,MSDTC事务管理器无法从源事务管理器中提取事务。可能的原因是:存在防火墙且MSDTC进程没有例外,两台计算机无法通过其NetBIOS名称找到对方,或者两个事务管理器之一未启用对网络事务的支持。 (来自HRESULT的异常:0x8004D02B)System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize,Byte [] propgationToken,IntPtr managedIdentifier,Guid&transactionIdentifier,OletxTransactionIsolationLevel&isolationLevel,ITransactionShim&transactionShim)在System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte []) propagationToken)
好心劝告
我们有完全相同的情况,不止一次。每次都是以下之一:
ping servername
从一个服务器尝试到另一个服务器来检查是否是这种情况。如果按名称ping失败并且IP成功ping(或按名称ping返回错误的IP),则应该与系统管理员联系以查看DNS / DHCP。希望能帮助到你。
要检查的事项:
连接到远程SQl服务器时遇到了同样的问题。在我的情况下,解决方案是将"enlist=false"
添加到连接字符串。