代码之家  ›  专栏  ›  技术社区  ›  Tamir

使用事务支持写入WCF自定义消息

  •  0
  • Tamir  · 技术社区  · 14 年前

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

    MS-DTC已启用。

    问题是,当 受保护的重写void OnWriteBodyContents(XmlDictionaryWriter Writer) 方法在自定义消息上执行,没有事务。
    system.transactions.transaction.current为空。在执行服务时,事务流可以正常工作,但是当消息由wcf机制写入时,它似乎是从事务中出来的,这会导致在不执行事务的情况下执行db命令(用于提取数据)。
    请注意,如果我传递的是简单数组而不是IEnumerable,那么db操作将在事务下执行,但我希望它与响应写入并行执行。

    有什么想法吗?为什么交易不见了?如何激活交易?

    多谢!
    塔米尔。

    1 回复  |  直到 14 年前
        1
  •  1
  •   VinayC    14 年前

    事务通常附加到当前线程或调用上下文。因此,如果您在不同的线程上启动事务,并且消息序列化在另一个线程上进行,那么该线程上的事务将不可用。你应该看看TransactionScope和 DependentTransaction 支持这种情况。

    推荐文章