C# 事务超时

C# 事务超时,c#,sql,sql-server,transactions,C#,Sql,Sql Server,Transactions,我有以下例外问题: 与当前连接关联的事务已完成 但尚未处理。交易必须在交易结束前处理 连接可用于执行SQL语句 对数据库的“调用”需要10米53秒(在没有事务的情况下测试并成功) 对于事务,它在10米后抛出异常。所以我很确定产生问题的不是代码,而是事务超时限制 我看到很多人都在努力解决这个问题,但我已经尝试了我找到的所有可能的解决方案,但仍然没有成功地摆脱这个例外 我应该使用以下代码: [...] TransactionOptions transactionOptions = new Trans

我有以下例外问题:

与当前连接关联的事务已完成 但尚未处理。交易必须在交易结束前处理 连接可用于执行SQL语句

对数据库的“调用”需要10米53秒(在没有事务的情况下测试并成功) 对于事务,它在10米后抛出异常。所以我很确定产生问题的不是代码,而是事务超时限制

我看到很多人都在努力解决这个问题,但我已经尝试了我找到的所有可能的解决方案,但仍然没有成功地摆脱这个例外

我应该使用以下代码:

[...]
TransactionOptions transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = IsolationLevel.Snapshot;
transactionOptions.Timeout = new TimeSpan( 0, 0, 30, 0, 0 );

using( var scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions) )
{
     foreach (var selector in GetDataContext().sp_GetChangedSelectors(changeSet))
     {
          // xml-result will be stored in a file
     }

     // multiple other SP calls the same way

     scope.Complete( );
}
我补充了声明

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

到%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\config中的machine.config 在两台计算机上(本地计算机和sql server计算机)


我想不出下一步该怎么办了。有什么建议吗?

只是一个猜测:您正在运行32位应用程序吗?那么这可能是错误的machine.config

%WINDIR%\Microsoft.NET\Framework\v4.0.30319


否则,我会检查web.config或app.config中是否覆盖了此值,确保修改了正确的
machine.config
文件

根据编译应用程序的方式(AnyCPU/x64/x86,“首选32位”),使用的
machine.config
将有所不同(Framework64与Framework64)


另外,如果应用程序为32位(exe的名称附加了*32),请确保在修改
machine.config

@Viper后重新启动计算机。您应该在任务管理器的“进程”选项卡中看到Viper。谢谢你。不要考虑32位和64位的问题。