跨AppDomains和进程的TransactionScope

Sib*_*Guy 5 .net database ado.net transactionscope system.transactions

跨不同的AppDomain和进程使用System.Transactions(主要是TransactionScope)是真的吗?

DependentTransaction仅在一个AppDomain内部工作.

Ran*_*ica 8

是的,它有效.我们通过WCF流​​动事务,调用流程外事务COM +组件,并手动将事务从.NET 2.0 asmx Web服务传递到WCF服务.

现在,这并不是说设置不挑剔.我认为大多数问题都是在所有服务器上正确设置MSDTC.

UPDATE

我们不使用DependentClone.我们使用传递事务作为字节数组GetTransactionFromTransmitterPropagationToken.非常类似于在AppDomains传播事务的第二个示例.

举个例子:

客户:

public void CallOutOfProcessAndPassTransaction
{
    Client client = new Client();

    client.DoSomethingTransactional(
        System.Transactions.TransactionInterop.GetTransmitterPropagationToken(
            System.Transactions.Transaction.Current)
    );
}
Run Code Online (Sandbox Code Playgroud)

服务:

public void DoSomethingTransactional(byte[] tx)
{
    using (TransactionScope ts = new TransactionScope(
               TransactionInterop.GetTransactionFromTransmitterPropagationToken(tx)))
    {
        // Do Something

        // vote to commit the transaction if the caller also agrees
        ts.Complete();
    }
}
Run Code Online (Sandbox Code Playgroud)