Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
支持事务的WCF自定义消息编写_Wcf_Transactions_Message_Msdtc_Distributed Transactions - Fatal编程技术网

支持事务的WCF自定义消息编写

支持事务的WCF自定义消息编写,wcf,transactions,message,msdtc,distributed-transactions,Wcf,Transactions,Message,Msdtc,Distributed Transactions,我正在使用继承System.Servicemodel.Channels.message的自定义消息。 我的自定义消息获取从数据库提取的IEnumerable集合。 WCF服务是事务性的(已经过测试) MS-DTC已启用 问题是,在自定义消息上执行受保护的重写void OnWriteBodyContents(XmlDictionaryWriter writer writer)方法时,没有事务。 System.Transactions.Transaction.Current为空。在执行服务时,事务流

我正在使用继承System.Servicemodel.Channels.message的自定义消息。
我的自定义消息获取从数据库提取的IEnumerable集合。
WCF服务是事务性的(已经过测试)

MS-DTC已启用

问题是,在自定义消息上执行受保护的重写void OnWriteBodyContents(XmlDictionaryWriter writer writer)方法时,没有事务。
System.Transactions.Transaction.Current为空。在执行服务时,事务流工作正常,但当消息由WCF机制写入时,它似乎来自一个事务,导致DB命令(用于提取数据)在没有事务的情况下执行。
请注意,如果我传递的是简单数组而不是IEnumerable,则DB操作将在事务下执行,但我希望它与响应写入并行执行

请问您有什么想法,为什么交易会丢失,以及如何激活它

非常感谢

Tamir。

事务通常附加到当前线程或调用上下文。所以,若您在不同的线程上启动事务,并且消息序列化发生在另一个线程上,那个么该线程上的事务将不可用。你应该看看TransactionScope,看看它是否支持这样的场景。

你太棒了!谢谢你。但是,在fx 4.0之前,我如何解决此类问题?实际上,自System.Transactions(即NET 2.0)引入以来,DependentTransaction就存在