我有一个Windows工作流通过事务消耗的WCF服务。我有一个使用EF调用存储过程的方法。
存储过程需要很长时间才能返回结果,我得到以下异常:
执行此方法调用的事务是异步中止的。
当我设置TransactionTimeout
via ServiceBehaviour
属性时,一切正常:
[ServiceBehavior(TransactionTimeOut="00:02:00")]
但是当TransactionTimeOut
通过app.config
设置时,它无效,我得到了上述异常。
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceTimeouts transactionTimeout="00:02:00"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
我也试过<System.transaction>
,但我仍然收到错误。
提前感谢您的帮助。
答案 0 :(得分:0)
要增加超时,请使用以下标记:
<system.serviceMdel>
<bindings>
<httpBinding>
<binding ... receiveTimeout="..." sendTimeout="...">
</binding>
</httpBinding>
</bindings>
</system.serviceMdel>
请参阅此Microsoft document。
答案 1 :(得分:0)
根据Microsoft documentation:
如果在服务配置部分中设置了此属性,则应使用OperationBehaviorAttribute
应用相应服务的至少一个方法,其中TransactionScopeRequired
属性设置为true
。
我刚刚将[OperationBehavior(TransactionScopeRequired = true)]
添加到服务方法中,然后我在TransactionScope
内进行了查询,一切正常。