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