Multithreading 对于多线程更新的事务超时异常状态,该操作无效
我正在使用以下事务Multithreading 对于多线程更新的事务超时异常状态,该操作无效,multithreading,wcf,transactions,timeout,transactionscope,Multithreading,Wcf,Transactions,Timeout,Transactionscope,我正在使用以下事务 var transactionScopeOptions = new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted, Timeout = Timeout = new TimeSpan(0, 10, 0) }; using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.R
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>
虽然我使用的是SQLServer2012和最新的VisualStudio框架,但我不确定它是否有用
编辑:
我还有以下几点:
<system.transactions>
<machineSettings maxTimeout="02:00:00" />
</system.transactions>
在应用程序配置中:
<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">
及
编辑:
我尝试将配置更改为以下内容,希望是WCF超时(默认值为1分钟),但仍然得到这些异常:(将超时延长到10分钟)
我在另一个链接中问了一个问题
<serviceTimeouts transactionTimeout="00:10:00" />
<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" />