0

我有这个非常简单的工作流程:
简单的工作流程

正如大家所见,它由一个接收、一个简单的分配和一个发送响应组成,所有这些都在一个接收事务范围内。

现在在消费者方面,我有这段简单的代码:

    static void Main(string[] args)
    {            
        using (TransactionScope scope = new TransactionScope())
        {
            Transaction t = Transaction.Current;
            t.TransactionCompleted += t_TransactionCompleted;

            TransactedServiceRef.ServiceClient cli = new TransactedServiceRef.ServiceClient();
            string aux = cli.GetData(new TransactedServiceRef.GetData() { id = 1, value = 1 });                

            Console.WriteLine(aux);
            scope.Complete();

        }            
        Console.ReadLine();

    }

    static void t_TransactionCompleted(object sender, TransactionEventArgs e)
    {
        //POINT 1
    }

现在我的问题是:我不知道为什么,但在“第 1 点”中,我的交易总是中止!!!没有抛出异常,没有错误,没有回滚,什么都没有......它只是中止......有人可以帮助我吗?

顺便说一句:我希望在 POINT 1 中的状态是 Commited ......

4

2 回答 2

1

您的问题中没有包含任何 WCF 配置详细信息?您是否还使用了适当的绑定并启用了事务?

前段时间我写了一篇关于这个主题的博客文章。希望有帮助。

于 2013-02-01T17:58:11.093 回答
0

我检查了“PersistBeforeSend”......所以当我取消选中它时,一切都回到了预期......我不知道它为什么会起作用......它只是......

于 2013-02-07T15:45:40.647 回答