Транзакция WCF MSMQ с вставкой базы данных Oracle - PullRequest
0 голосов
/ 19 марта 2012

Я хочу создать службу WCF с использованием NetMsmqBinding, которая будет вставлять данные в базу данных Oracle. Я использую MS Visual Studio с C # и .NET 4.0, в настоящее время использую System.Data.OracleClient с Oracle 11.

Мое требование заключается в том, чтобы данные никогда не терялись, если предполагалось, что клиент смог успешно вызвать службу (таким образом, поместив сообщение в очередь MSMQ).

Поэтому я пытаюсь спроектировать службу так, чтобы, если вставка в Oracle прошла успешно, сообщение было удалено из очереди. Если нет, то сообщение не следует удалять из очереди, чтобы его можно было повторить в течение определенного периода времени. Я пытаюсь использовать транзакцию (используя класс TransactionScope), чтобы убедиться, что это работает таким образом.

Однако я сталкиваюсь с выполнением оператора INSERT в Oracle в TransactionScope, он выдает исключение и, похоже, приводит к сбою рабочего процесса IIS. Похоже, что транзакции WCF / .NET не поддерживаются Oracle? Мне нигде не удалось найти четкого ответа, чтобы показать, поддерживает ли Oracle транзакции из среды .NET. Это возможно сделать, или я не на правильном пути? Любой совет будет оценен.

1 Ответ

0 голосов
/ 19 марта 2012

Если вы хотите поддерживать распределенные транзакции из ODP.net в Oracle, на клиентском компьютере должна быть запущена Oracle MTS Recovery Service . Это входит в установочный пакет ODAC.

...