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為默認,主要為后面的時間參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM