アプリケーションでトランザクションを設定する際に問題が発生しています。軽量トランザクションを実行すると、次のように機能します。
using (TransactionScope tx = new TransactionScope())
{
// Connect to Server 1 in a transaction
tx.Complete()
}
ネストされたトランザクションを実行すると、失敗します:
using (TransactionScope tx = new TransactionScope())
{
// Connect to Server 1 in a transaction
using (TransactionScope tx2 = new TransactionScope())
{
// Connect to Server 2 in a transaction
tx2.Complete()
}
tx.Complete()
}
私が得ているエラーは次のとおりです。
The MSDTC transaction manager was unable to pull the transaction from the source transaction manager due to communication problems. Possible causes are: a firewall is present and it doesn't have an exception for the MSDTC process, the two machines cannot find each other by their NetBIOS names, or the support for network transactions is not enabled for one of the two transaction managers. (Exception from HRESULT: 0x8004D02B)
サーバーでまったく同じコードを実行すると、機能します。コンピューターで MSDTC を実行/構成しています (サーバーと同じ設定)。
私たちのネットワーク部門は、ファイアウォールでブロックされたトラフィックは見られないと言っています。
コンピューターからサーバーに DTC Ping できますが、サーバーから戻ることはできません。
何か案は?ネットワークの問題だと思いますが、助けが必要です。