WCF交易超时

时间:2018-02-05 19:37:12

标签: entity-framework wcf transactions timeout workflow

我有一个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>,但我仍然收到错误。

提前感谢您的帮助。

2 个答案:

答案 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内进行了查询,一切正常。