2013-03-27 86 views
2

TimeoutException問題。TransactionScope TransactionAborted異常 - BeginCommit()?

上下文:Visual Studio 2010中

的問題:我偶爾(CA一度上的程序,每天運行一次一個小時),得到一個異常 ,我不明白。

這是例外:

Exception message : The transaction has aborted. 
Exception Source : System.Transactions 
Exception Trace : at System.Transactions.TransactionStateAborted.BeginCommit(InternalTransaction tx, Boolean asyncCommit, AsyncCallback asyncCallback, Object asyncState) 
    at System.Transactions.CommittableTransaction.Commit() 
    at System.Transactions.TransactionScope.InternalDispose() 
    at System.Transactions.TransactionScope.Dispose() 
    at JDTranslation_K4_ReadEmails.Form1.ReadEmailDetails(EmailMessage emMessage, String strUserName, String strAccountName) 
Exception Target : Void BeginCommit(System.Transactions.InternalTransaction, Boolean, System.AsyncCallback, System.Object) 

異常已持續25-30分鐘交易後通常發生。

我已經設置了我的交易持續5個小時(見下文),所以我完全不明白爲什麼 它可以超時。

而我有些擔心:我知道一些數據是致力於 數據庫 - 我可以相信他們都是? (這幾乎是不可能的 覈實調查數據)。

程序(該功能的一部分)看起來大約是這樣的:

//INSTANTIATE THE TRANSACTION SCOPE 
TransactionOptions option = new TransactionOptions(); 
//SET THE ISOLATION LEVEL AND THE TIMEOUT DURATION 
option.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; 
option.Timeout = new TimeSpan(5, 0, 0); 

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, option)) 
{ 
try{ 
// do some select/update/insert/delete stuff on both connections, 
// up to perhaps 3600 actions 
// some of it happens in static functions declared elsewhere in the same class scope 
} // this is the line mentioned in the Exception 

} 

我會很樂意的任何答案,我的一些問題:

爲什麼發生異常?

我可以相信所有數據都已提交,或者在C#.NET中有真正的錯誤允許部分提交嗎?

我的代碼是否正確,還是應該以不同的方式組織它以解決問題?

請幫忙!

回答

0

您可以增加web.config中的超時時間。此外嘗試增加游泳池的大小。有時在長時間的查詢中,它會增加最大線程限制。

相關問題