System.Transactions事务超时设置

System.Transactions 有2个超时属性(timeout 与 maxTimeout),可以通过配置文件来进行设置。

1. timeout

System.Transactions 默认的timeout值为1分钟,可以通过app.config/web.config/machine.config来进行设置(对于应用中具体的事务还可以通过调用具体对象TransactionScopeCommittableTransaction的构造函数进行设置)。以下配置样例代码将其设置为30秒:

<configuration>
 <system.transactions>
  <defaultSettings timeout="00:00:30" />
 </system.transactions>
</configuration>

2. maximum transaction timeout

System.Transactions此外还有一个属性: maximum transaction timeout,该属性主要是系统管理员用于限制事务超时,其默认值为10分钟,并且不可在代码中覆盖设置。如果在配置文件或者代码中所设置的超时值均已超出该值,则以该值为准。maximum transaction timeout只能在machine.config文件中进行配置,以下配置样例代码将其设置为30分钟:

<configuration>
 <system.transactions>
   <machineSettings maxTimeout="00:30:00" />
 </system.transactions>
</configuration>

综上所述,即使在应用的配置文件或代码中将timeout设置为0,试图将事务超时时间设置为无限长也是无效的,整个事务的实际超时时间还是为machineSetting的maxTimeout值所限制。

 

注:代码中设置非默认时这样写:

using (var scope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 3, 0)))

TransactionScopeOption.Required为默认,主要为后面的时间参数

转载于:https://www.cnblogs.com/ceci/p/4203029.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值