我正在使用以下交易
var transactionScopeOptions = new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted, Timeout = Timeout = new TimeSpan(0, 10, 0) };
using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Required, transactionScopeOptions))
{
/* update query here with data context execute command */
}
我持续该操作对于交易状态例外无效,内部例外情况为交易超时。
在本地,我只获得10万分之一的机会,但在服务器中它偶尔会发生。该应用程序在MSMQ和WCF上运行。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
我尝试了以下内容:
<system.transactions>
<machineSettings maxTimeout="02:00:00" />
</system.transactions>
并将dataContext.CommandTimeout设置为1小时或0(无限)。 在app.config
中更改了连接超时= 3600我已经尝试了几乎所有我在谷歌上阅读但仍然没有运气的东西。希望我能在服务器中删除此问题。
注意:更新查询通常持续0到20秒(最大值),但由于它是多线程的,因此会导致错误。如果我在异常中运行那些,它似乎不再得到错误,因为事务没有超时。
修改
我的所有查询都有脏读(nolock用于读取和rowlock用于更新)
编辑:
组件服务&gt;我的电脑&gt;选项&gt;交易超时(秒):600 然后在服务中重新启动“Distributed Transaction Coordinator”。
仍然没有运气
修改
在进入transactionScope时添加了时间戳,当获得异常(Transaction TimeOut)时,它似乎并没有真正超时相关,因为它在进入事务范围后不到一分钟就被踢出(当我已经指定了事务时)在10分钟内抽出时间。)
这意味着它只是发出了Transaction TimeOut异常,即使它确实没有超时。
修改
根据上一个错误,我尝试将以下based from this website添加到我的连接字符串中:
Transaction Binding=Explicit Unbind
虽然我使用的是SQL Server 2012和最新的Visual Studio Framework,但不确定它是否有用。
修改
我也有以下内容:
在app config中:
<system.transactions>
<defaultSettings timeout="2:00:00" />
</system.transactions>
绑定服务:
<binding name="FooBinding"
deadLetterQueue="System"
maxReceivedMessageSize="524288"
exactlyOnce="true"
receiveErrorHandling="Move"
retryCycleDelay="00:00:30"
maxRetryCycles="120"
receiveRetryCount="0"
sendTimeout="00:01:00">
和
<serviceTimeouts transactionTimeout="00:10:00" />
修改
我尝试将配置更改为以下内容,希望它是WCF超时(默认为1分钟),但仍然会获得以下异常:(将超时延长到10分钟)
<binding name="FooBinding"
deadLetterQueue="System"
maxReceivedMessageSize="524288"
exactlyOnce="true"
receiveErrorHandling="Move"
retryCycleDelay="00:00:30"
maxRetryCycles="120"
receiveRetryCount="0"
closeTimeout="00:10:00"
openTimeout="00:10:00"
receiveTimeout="00:10:00"
sendTimeout="00:10:00" />
我在另一个链接中询问了related question with some code logic。