2012-04-28 13 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

+0

В транзакции есть импорт огромного файла из другой системы. Вот почему мне так нужна транзакция –

ответ

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

Я добавил этот параметр раньше (см. Ask). Должен ли я перезагрузить компьютер? –

+1

Спасибо @ Jememy, я исправил эту проблему. Есть два раза с именем Framework и Framework64. Сначала я изменил maxTimeout в файле machine.config в папке Framework. Но потом я пытаюсь изменить его в папке Framework64, и он работает! –

Смежные вопросы