在測試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為啟用自動升級)
浙公網安備 33010602011771號