我一直在使用 Oracle 10g 数据库开发一个 winform 应用程序,它使用 TransactionScope
并想修改 maxTimeOut
machine.config 文件中指定的值,我的 machine.config 文件位于以下位置(我为此应用程序使用 .net 4)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
最初没有为 maxTimeOut
指定任何内容在其中,因此默认为 10 分钟。为了改变它,我添加了 maxTimeout="00:00:10"
值如下所示:
<sectionGroup name="system.transactions" type="System.Transactions.Configuration.TransactionsSectionGroup, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null">
<section name="defaultSettings" type="System.Transactions.Configuration.DefaultSettingsSection, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
<section name="machineSettings" type="System.Transactions.Configuration.MachineSettingsSection, System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" allowDefinition="MachineOnly" allowExeDefinition="MachineOnly" maxTimeout="00:00:10"/>
</sectionGroup>
我已经重新启动了 PC 并运行了一个持续时间比这更长的测试 - 但事务似乎在 10 秒后没有中止,而是 scopeOption.TimeOut
使用 TransactionScopeOption 参数中指定的值(即 5 分钟),事务在 5 分钟后超时。
我是否将 maxTimeout 值包含在上面的正确位置?文件中是否有任何需要更改的内容?为什么未使用 machine.config 中的 maxTimeout 值?
谢谢
最佳答案
它没有被拾取的原因是因为 maxTimeOut 值应该放在 machine.config 文件的末尾,就在结束配置标记之前。一旦我这样做了,它就开始工作了。
<configuration>
<!-- Other configuration sections-->
<system.transactions>
<machineSettings maxTimeout="01:00:00" />
</system.transactions>
</configuration>
关于c# - 来自 Machine.Config 的 maxTimeout 值未被 C# winform 应用程序获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16281187/