Клиентское приложение звонит 2 различные службы WCF в одном TransactionScope, в надежде откат всей транзакции, если один из вызовов не может так:WCF транзакций над несколькими службами
using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
proxy1.UpdateThing(data);
proxy2.UpdateSomeOtherThing(data);
transaction.Complete();
}
Теперь, вызов для proxy1 отлично, но вызов proxy2 вызывает исключение. По-прежнему вызов proxy1 преуспел, когда я проверяю базу данных.
Как я должен работать в этом сценарии? Являются ли DependentTransactions способ пойти сюда?
Обе службы размещены на одной машине, оба имеют wsHttpBinding с TransactionFlow = true. Транзакция работает для каждой службы изолированно, это когда вызов использовал обе службы, например, в примере, которые не работают. Обе услуги украшены соответствующими аннотациями.
Исключение - это всего лишь сложный бросок в одной из служб, для проверки этого.
Стоит отметить, что обе службы используют EF для обработки своих данных в базе данных.
Является proxy1 конечной точки и/или операции в состоянии обрабатывать транзакции? Если службы для proxy1 и proxy2 находятся под вашим контролем, возможно, проверьте эту статью, чтобы включить распределенные транзакции: http://www.c-sharpcorner.com/UploadFile/81a718/simple-steps-to-enable-transactions-in- wcf/ – martennis
Да, оба имеют TransactionFlow на интерфейсе и TransactionScopeRequired заданы соответствующие методы. – Apeiron
Какие привязки вы используете? Некоторые привязки не поддерживают транзакции. – martennis