请参阅以下代码:
Dim intAddNicheMergeTotal As Integer = 0
Dim intDeleteCount As Integer
Dim ts As TimeSpan = New TimeSpan(0, 200, 0)
Dim transOp As New TransactionOptions
transOp.Timeout = ts
Using scope = New TransactionScope(TransactionScopeOption.Required, transOp)
'Do some work, which takes about 35 minutes
scope.complete
End Using
上面的代码在scope.complete行引发了一个异常:System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.TimeoutException: Transaction Timeout
为什么交易中止?我已将超时时间设置为200分钟。
答案 0 :(得分:3)
在machine.config
部分的system.transactions
中,有一个maxTimeout
设置。如果未明确设置任何值,则使用默认值10分钟。
此设置旨在允许系统管理员限制事务超时,并且您无法在代码中覆盖它。如果在代码中指定了更高的值(如您所示),则使用较低的maxTimeout设置。
您可以在machine.config
中将其设置为更高的值,例如:
<system.transactions>
<machineSettings maxTimeout="00:03:20" />
</system.transactions>
但此更改将适用于计算机上的所有交易。