2012-04-28 256 views
2
using (TransactionScope transaction = TransactionScopeManager.GetTransactionScope(Settings.Import.TimeOut)) 
{ 
    Logger.Trace.DebugFormat("Import Deduction timeout: <{0}>", Settings.Import.TimeOut); 
    //Logger shows "Import Deduction timeout: <30>" 
    //more code 
} 

但交易總是隻運行10分鐘。 我已經改變部分:TransactionTimeout無法正常工作

<system.transactions> 
    <machineSettings maxTimeout=″01:30:00″/> 
</system.transactions> 

但它仍然繼續在10分鐘後失敗。 爲什麼?

請幫忙。

+0

@Jermy一個答案只要你,但如果你需要一個事務運行超過10分鐘,我會建議你重新評估你的設計。我通常以毫秒爲單位考慮我的交易,或高端的交易。 – EBarr 2012-04-28 11:50:53

+0

在交易中有從另一個系統導入巨大的文件。這就是爲什麼我需要這麼長的交易 – 2012-04-28 12:00:57

回答

1

作爲每http://msdn.microsoft.com/en-us/library/ms149852(v=vs.90).aspx

在機器配置,存在帽超時的值。默認爲 ,這是10分鐘。因此,如果您設置的超時時間大於10分鐘,則在System.Transactions中,您的值將被忽略,並且系統將按照超時時間爲10分鐘的方式進行操作。

http://msdn.microsoft.com/en-us/library/system.transactions.configuration.machinesettingssection.maxtimeout.aspx

http://social.msdn.microsoft.com/Forums/en-US/windowstransactionsprogramming/thread/ba508c2b-af91-490c-a05c-e4bf92f81cc6

http://blogs.msdn.com/ajit/archive/2008/06/18/override-the-system-transactions-default-timeout-of-10-minutes-in-the-code.aspx

+0

我已經提前添加了這個參數(見問)。 我應該重新啓動計算機嗎? – 2012-04-28 11:56:10

+1

謝謝@Jeremy,我解決了這個問題。有兩個名爲Framework和Framework64的框架。首先,我在Framework文件夾的machine.config中更改了maxTimeout。但是,然後我嘗試在Framework64文件夾中更改它,它的工作原理! – 2012-04-28 12:44:49