我有一个通过事务而被Windows Workflow消耗的WCF服务。我有一种使用ef。调用存储过程的方法。
存储过程需要很长时间才能返回结果,我得到以下例外:
该方法调用执行的交易被异步中止。
当我通过ServiceBehaviour
属性设置TransactionTimeout
时,一切正常:
[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>
,但我仍会遇到错误。
事先感谢您的帮助。
加上标记后使用超时使用:
<system.serviceMdel>
<bindings>
<httpBinding>
<binding ... receiveTimeout="..." sendTimeout="...">
</binding>
</httpBinding>
</bindings>
</system.serviceMdel>
请参阅此Microsoft文档。
根据Microsoft文档:如果此属性设置在服务配置部分中,则应使用OperationBehaviorAttribute
将至少一种相应服务的方法应用于TransactionScopeRequired
属性,将其设置为true
。
我刚刚将[OperationBehavior(TransactionScopeRequired = true)]
添加到了服务方法中,然后我在TransactionScope
中求职,一切正常。