Kevin Li

突破.net极限

导航

基于WS-AtomicTransaction标准的WCF远程分布式事务(补充)

Posted on 2007-05-26 23:58  Kevin Li  阅读(2515)  评论(1编辑  收藏  举报

在测试WCF 的WS-AT协议的时候发现,虽然wsHttpBinding只支持WS-AtomicTransaction,但是当我没有配置MSDTC支持WS-AT协议,或者没有启用WS-AT协议,事务还是能够正常的Commit和Rollback。刚开始不知道是什么原因,后来查了一下微软的相关文档,发现使用wsHttpBinding支持事务时,出于效率的考虑,WCF会首先使用Oletx事务,而不是完全的ws-at协议。只有在oletx协议不可用的情况,比如135端口没开、或者和java web service互操作的情况下,wcf才会完全使用ws-at协议。这固然是好,但是有时候我们并不希望这样(比如测试的时候),这时候我们可以修改注册表,禁止事务自动升级为oletx事务。具体是在注册表:HKLM\SOFTWARE\Microsoft\WSAT\3.0下增加一个名为“OleTxUpgradeEnabled”的DWord值,并且设置值为0(1为启用自动升级)