2010-08-25 47 views
0

我正在使用繼承System.Servicemodel.Channels.Message的自定義消息。
我的自定義消息獲取從數據庫中提取的IEnumerable集合。
WCF服務是事務性的(已經測試過)。使用事務支持WCF自定義消息寫入

MS-DTC已啓用。

問題是,當保護覆蓋無效OnWriteBodyContents(XmlDictionaryWriter作家)方法在自定義消息執行,沒有事務。
System.Transactions.Transaction.Current爲空。在執行服務時,事務流工作正常,但是當消息由WCF機制寫入時,它看起來好像沒有事務,導致DB命令(拉數據)在沒有事務的情況下執行。
請注意,如果我傳遞的是簡單的數組而不是IEnumerable,則數據庫操作將在事務下執行,但我希望它與響應寫入並行執行。

任何想法請,爲什麼交易缺失,可以做些什麼來激活它?

非常感謝!
坦米爾。

回答

1

交易通常附加到您當前的線程或調用上下文。因此,如果您在不同的線程上啓動事務,並且消息序列化在另一個線程上進行攻擊,那麼該線程上的事務將不可用。您應該查看TransactionScope和DependentTransaction以支持這種情況。

+0

你太棒了!感謝那。 但是,如何在fx 4.0之前解決這類問題? – Tamir 2010-08-25 12:35:11

+0

實際上,自引入System.Transactions以來,DepedentTransaction存在,即.NET 2.0 – VinayC 2010-08-25 13:01:42

+0

是的,對不起,我的不好。沒注意到.. :-) – Tamir 2010-08-25 13:08:52

相關問題