c# - 事务中止时如何获取错误详细信息

标签 c# transactions

我正在使用 System.TransanctionTransanctionCompleted 事件来检测中止的交易。

我如何找出它失败的原因?是否有检测错误详细信息的方法?

最佳答案

你可以捕获 System.Transactions.TransactionException关于您的交易方式

try
{
    //Create the transaction scope
    using (TransactionScope scope = new TransactionScope())
    {
        //Register for the transaction completed event for the current transaction
        Transaction.Current.TransactionCompleted += new TransactionCompletedEventHandler(Current_TransactionCompleted);
        // proces the transaction
    }

}
catch (System.Transactions.TransactionAbortedException ex)
{
    Console.WriteLine(ex);
}
catch (System.Transactions.TransactionException ex)
{
    Console.WriteLine(ex);
}
catch
{
    Console.WriteLine("Cannot complete transaction");
    throw;
}

交易完成事件处理器

static void Current_TransactionCompleted(object sender, TransactionEventArgs e)
{
    Console.WriteLine("A transaction has completed:");
    Console.WriteLine("ID:             {0}", e.Transaction.TransactionInformation.LocalIdentifier);
    Console.WriteLine("Distributed ID: {0}", e.Transaction.TransactionInformation.DistributedIdentifier);
    Console.WriteLine("Status:         {0}", e.Transaction.TransactionInformation.Status);
    Console.WriteLine("IsolationLevel: {0}", e.Transaction.IsolationLevel);
}

关于c# - 事务中止时如何获取错误详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998989/

相关文章:

c# - 如何让线程等待,直到变量达到.NET/Csharp 中的一组值中的一个

c# - .NET GC 从终结器访问同步对象

Symfony2 : transactions fail with "There is no active transaction."

PostgreSQL - 如何确定事务是否处于事件状态?

spring - MethodValidationPostProcessor 破坏了 @Transactional

python - 在 Python 中如何检查您是否正在与 ZODB 进行交易?

c# - 将 Excel 宏转换为 C#?

c# - .NET 中是否有 Dictionary 的替代方案?

c# - 将不同的选项传递给方法

postgresql - Postgres 9.1 : Measure time taken for a transaction (including commit)