【问题标题】:WCF Custom Message Writing With Transaction Support具有事务支持的 WCF 自定义消息写入
【发布时间】:2011-04-03 14:54:56
【问题描述】:

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

MS-DTC 已启用。

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

请提供任何想法,为什么交易丢失以及可以做些什么来激活它?

非常感谢!
塔米尔。

【问题讨论】:

    标签: wcf transactions message msdtc distributed-transactions


    【解决方案1】:

    事务通常附加到您当前的线程或调用上下文。因此,如果您在不同的线程上启动事务并且消息序列化正在另一个线程上发生,那么该线程上的事务将不可用。您应该查看 TransactionScope 和 DependentTransaction 以支持此类场景。

    【讨论】:

    • 你太棒了!感谢那。但是,在 fx 4.0 之前我该如何解决这类问题?
    • 实际上,DepedentTransaction 自 System.Transactions 即 .NET 2.0 引入以来就存在
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多