System.Transactions 有2個超時屬性(timeout 與 maxTimeout),能夠經過配置文件來進行設置。web
System.Transactions 默認的timeout值爲1分鐘,能夠經過app.config/web.config/machine.config來進行設置(對於應用中具體的事務還能夠經過調用具體對象TransactionScope或CommittableTransaction的構造函數進行設置)。如下配置樣例代碼將其設置爲30秒:app
<configuration> <system.transactions> <defaultSettings timeout="00:00:30" /> </system.transactions> </configuration>
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爲默認,主要爲後面的時間參數對象