Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
Transactions 工作流基础与DTC事务回滚错误行为 我正在测试工作流基础4.5中的接收事务范围,我认为它有问题!p>_Transactions_Workflow Foundation 4_Transactionscope_Msdtc - Fatal编程技术网

Transactions 工作流基础与DTC事务回滚错误行为 我正在测试工作流基础4.5中的接收事务范围,我认为它有问题!p>

Transactions 工作流基础与DTC事务回滚错误行为 我正在测试工作流基础4.5中的接收事务范围,我认为它有问题!p>,transactions,workflow-foundation-4,transactionscope,msdtc,Transactions,Workflow Foundation 4,Transactionscope,Msdtc,查看当我通过显式roolback返回事务时: using (TransactionScope s = new TransactionScope()) { using (ServiceReference1.ServiceClient cli = new ServiceReference1.ServiceClient()) { Transaction t = Transaction.Current; cli.Ge

查看当我通过显式roolback返回事务时:

using (TransactionScope s = new TransactionScope())
{
    using (ServiceReference1.ServiceClient cli = new ServiceReference1.ServiceClient())
    {
        Transaction t = Transaction.Current;                    
        cli.GetData(new ServiceReference1.GetData() { data = 10, ID = id });
        t.Rollback();                                        
    }
}
或者通过在transactionScope中引发异常:

using (TransactionScope s = new TransactionScope())
{
    using (ServiceReference1.ServiceClient cli = new ServiceReference1.ServiceClient())
    {
        cli.GetData(new ServiceReference1.GetData() { data = 10, ID = id });
        throw new Exception("Error!");
    }
}
我希望工作流也能回滚!换句话说,我希望接收的“GetData”仍然有效!但事实并非如此。工作流已执行,GetData不再是有效的

在“GetData”之后还有其他“Receive”以保证工作流不会进入“completed”状态

我确信我的交易正在流入工作流,因为在工作流中,我有一个活动返回我交易ID(当然与应用程序上的交易ID匹配)

有人知道发生了什么事吗?我错过了什么

进一步说明:
我的计算机中正在运行所有内容(包括Sql Server 2012上的备份存储)
DTC已启用

工作流本身不是事务性资源。因此,虽然您所做的任何数据库更新都可能会回滚,但工作流本身的状态不会重置。

但我的实例本身是持久的!如果我手动查询数据库,它就会显示出来!即使在AbortInstanceOnTransactionFailure=true时,行为是否相同?(TransactiveReceiveScope的名称)