来自Machine.Config的maxTimeout值未被C#winform应用程序获取

时间:2013-04-29 14:27:23

标签: c# transactions oracle10g transactionscope msdtc

我一直在使用Oracle 10g数据库的winform应用程序正在使用TransactionScope,并想要修改 machine.config 文件中指定的maxTimeOut值,我的< strong> 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秒后似乎没有中止,而是使用了TransactionScopeOption参数中指定的scopeOption.TimeOut值(5分钟)并且交易在5分钟后超时。

我是否已将maxTimeout值包含在上方的正确位置?文件中是否有任何需要更改的内容?为什么没有使用machine.config中maxTimeout的值?

由于

3 个答案:

答案 0 :(得分:16)

它没有被选中的原因是因为maxTimeOut值应该放在关闭配置标记之前的machine.config文件的末尾。只要我这样做就开始工作了。

 <system.transactions>
   <machineSettings maxTimeout="01:00:00" />
 </system.transactions>
</configuration> 

答案 1 :(得分:2)

尝试在32位机器配置中设置值

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config 

可能是为x86编译设置了winforms。 还要检查是否存在odac事务超时设置和程序集以进行设置。

答案 2 :(得分:0)

您可以使用 s_maximumTimeout s_cachedMaxTimeout 覆盖值

    <div id="form">
        <form action="#" method="post">
            <br><br>
            <input type="radio" id="terms" name="terms" onchange="on()">option 1.
            <br><br>
            <input type="radio" id="terms2" name="terms2" onchange="on()">option 2.
            <br><br>
            <input type="radio" id="terms3" name="terms3" onchange="on()">option 3.
            <br><br>
            <button type="submit" id="gonder" disabled>Send</button>
        </form>
    </div>
    <script>
        function on() {
            document.getElementById("gonder").removeAttribute("disabled");
        }
    </script>