System.Transactions事務超時設置

System.Transactions 有2個超時屬性(timeout 與 maxTimeout),能夠經過配置文件來進行設置。web

1. timeout

System.Transactions 默認的timeout值爲1分鐘,能夠經過app.config/web.config/machine.config來進行設置(對於應用中具體的事務還能夠經過調用具體對象TransactionScopeCommittableTransaction的構造函數進行設置)。如下配置樣例代碼將其設置爲30秒:app

<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值所限制。ui

 

注:代碼中設置非默認時這樣寫:spa

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

TransactionScopeOption.Required爲默認,主要爲後面的時間參數對象

相關文章
相關標籤/搜索