WCF basicHttpBinding: откат при сбое ответа клиенту

Я выставляю сервис WCF черезbasicHttpBinding который выполняет несколько операций с базой данных.

Я хочу гарантировать, что если клиент не получит ответ, операции базы данных будут отменены (без какого-либо потока транзакций через WCF). Например. клиент вызывает метод «DoX», который выполняется на сервере, но до его завершения клиент падает. Операции с базой данных следует откатить, как только ответ не может быть отправлен клиенту.

Есть ли способ сделать это? Будет ли[OperationBehavior(TransactionScopeRequired=true)] атрибутировать работу таким образом? Есть ли возможность обрабатывать ошибки связи на стороне сервера?

Обновление 1: Это выглядит[OperationBehavior(TransactionScopeRequired=true)] фиксирует транзакцию перед отправкой ответа клиенту и, следовательно, не может использоваться для отката, если клиент не получил ответ.

Обновление 2: Чтобы еще раз четко заявить, у меня нет необходимости каким-либо образом взаимодействовать с клиентской стороной. Клиент не должен знать о транзакции, иметь возможность отменить или зафиксировать ее, и никакая транзакция не должна проходить через привязку.только Я хочу, чтобы откат транзакции находился на стороне сервера, если транспортный канал не может доставить сообщение принимающему клиенту. В случае TCP / IP эта информация должна быть легко доступна для сервера. (ACK пакета TCP не отправляется обратно клиенту)

Таким образом, гипотетический поток выполнения на стороне сервера (обратите внимание на отсутствие на стороне клиента) должен быть:

Receive client request

Start transaction

Execute all logic inside the service operation

Send reply back to client

if (reply.failedToReceive) { transaction.Rollback() } // due to a failing TCP/IP transmission

Ответы на вопрос(1)

Ваш ответ на вопрос