Краткий ответ: Сделайте ваши сервисные вызовы под TransactionScope
и убедитесь, что сами вызовы настроены на выполнение транзакций.
TLDR читать эту статью здесь .
По сути, вам нужно украсить свой метод операционного контракта следующим образом:
[TransactionFlow(TransactionFlowOption.Allowed)]
void MyWcfServiceCall() {...}
и метод обслуживания вызывает себя с:
[OperationBehavior(TransactionScopeRequired = true)]
void MyWcfServiceCall() {...}
и звоните под TransactionScope
using (TransactionScope tx = new TransactionScope(TransactionScopeOption.RequiresNew)) {
myServiceClient.MyWcfServiceCall();
myOtherServiceClient.MyOtherWcfServiceCall();
tx.Complete();
}
в вашем конфигурационном файле для привязок, установите транзакцию Flow на true
:
<bindings>
<wsHttpBinding>
<binding name="MyServiceBinding" transactionFlow="true" ... />
</wsHttpBinding>
</bindings>