无法在方法中访问Transaction

时间:2013-03-07 11:15:22

标签: c# .net vb.net transactions transactionscope

我创建了一个隐式事务,如下所示:

Using ts As New TransactionScope(TransactionScopeOption.Required, New TimeSpan(1, 0, 0, 0))

MethodA()
ts.Complete()

End Using

MethodA()反过来调用了一些在环境事务中成功登记的方法,我可以看到它:

enter image description here

然而,一个方法(从上面TransactionScope创建的调用堆栈深度为4),我们似乎无法访问环境事务:

enter image description here

我相信这将在交易中的堆栈中的任何位置都可用,并且可能是此方法中的代码无法访问此事务中的数据的原因。

为什么环境交易不可用的任何想法?

1 个答案:

答案 0 :(得分:1)

如果未声明Transaction,则听起来该文件只缺少将其引入范围的using指令。尝试设置手表

System.Transactions.Trasaction.Current.TransactionTraceId.TransactionIdentifier

相反,因为它可以使用或不使用using指令。

如果环境交易不可用,那么Transaction仍然可以,但Transaction.Current将是null。这种情况的常见原因是切换线程的任何事情,例如async代码。了解执行上下文中的流程是很棘手的。