使用Oracle数据库插入的WCF MSMQ事务

时间:2012-03-19 15:35:16

标签: wcf oracle transactions msmq

我想使用NetMsmqBinding创建一个WCF服务,该服务将数据插入Oracle数据库。我正在使用带有C#和.NET 4.0的MS Visual Studio,目前正在使用System.Data.OracleClient和Oracle 11。

我的要求是假设客户端能够成功调用服务(从而将消息放入MSMQ队列),不会丢失任何数据。

因此,我正在尝试设计服务,以便如果插入Oracle成功,那么消息将从队列中取出。如果不是,则不应将该消息从队列中取出,以便可以在一段时间内重试该消息。我正在尝试使用事务(使用TransactionScope类)来确保以这种方式工作。

但是,我正在运行在TransactionScope中向Oracle执行INSERT语句,它抛出异常并且似乎使IIS工作进程崩溃。看来Oracle不支持WCF / .NET事务?我无法在任何地方找到明确的答案来显示Oracle是否支持.NET框架内的事务。这可能吗,或者我没有走上正轨?任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果要支持从ODP.net到Oracle的分布式事务,则必须在客户端计算机上运行 Oracle MTS Recovery Service 。这是在ODAC安装包中提供的。