我创建了一个针对MSMQ的WCF服务合同。由于它是MSMQ,我使用单向通信:
[OperationContract(IsOneWay = true)]
在我的服务实现中,我有OperationBehavior
自动提交事务:
[OperationBehavior(TransactionAutoComplete = true, TransactionScopeRequired = true)]
这可以确保WCF通过将消息放入重试队列(根据我的配置)来处理任何异常。从单向操作中抛出异常似乎很奇怪。这是告诉WCF不提交事务的正确方法吗?
答案 0 :(得分:0)
经过一番研究,我发现抛出异常是唯一方式告诉WCF使用内置的重试子队列。 WCF吞下了这个例外。它还用于确保交易不会自动完成。